0

列表定义:

@property (nonatomic, strong) NSArray *list;

@synthesize list = _list;

有什么区别:

list = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];

self.list = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];

第一个返回 Core Data 中的所有记录,但第二个不返回任何内容。

4

1 回答 1

1

我认为您必须阅读有关封装数据的 App 文档。

特别是,在第一个代码片段中,您要包装一个_list通过访问器方法调用的实例变量。

通常在 OOP 中它们也被称为 setter 和 getter。可以在为什么使用 getter 和 setter?.

因此,其他人的评论是正确的。list变量从何而来?

您需要了解的重要一点是,点语法是访问方法调用的一种简洁方式。因此,例如:

NSString *nickname = person.nickname;
person.nickname = @"This is my nickname";

等于

NSString *nickname = [person nickname];
[person setNickname:@"This is my nickname"];

一张纸条。从 XCode 4.4 开始,新的 Apple LLVM 编译器 4.0 允许您跳过该@synthesize指令。在引擎盖下,编译器生成一个带有_后缀的实例变量。进一步参考Automatic Property Synthesis With Xcode 4.4

于 2013-10-05T14:52:09.603 回答