列出了定义:
@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中的所有记录,但第二个不返回任何内容。
答案 0 :(得分:1)
我认为您必须阅读有关Encapsulating Data的应用文档。
特别是,使用第一个代码片段,您将通过访问器方法包装名为_list
的实例变量。
一般来说,在OOP中,它们也被称为setter和getter。可以在Why use getters and setters?中找到关于它们的优点的良好讨论。
所以,其他人的评论是正确的。 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的进一步参考。