MeX*_*eXx 25 xcode properties synthesize ios6
在昨晚更新到适用于iOS6的最新版Xcode 4.5之后,我得到了类似的警告和错误
属性'mapAnnotation'需要定义方法'mapAnnotation' - 使用@synthesize,@ dynamic或在此类实现中提供方法实现
因为缺少@synthesize语句,甚至是关于未知iVars的错误,如果我使用它们.
问题是,我认为没有必要写这些@synthesize语句自从Mountain Lion发布的最后一个Xcode Update 4.5以来,并且在我昨晚更新Xcode之前我的所有项目都没有它们(我删除了)从我的文件回来的一大堆@synthesize语句然后它甚至还在Release-Notes中:
•使用属性时,默认情况下会生成Objective-C @synthesize命令.
所以我很困惑,我错过了一个新的项目设置,它会自动生成@synthesize一代吗?
但是,当我创建一个新项目并尝试它时,它甚至都无法工作
Tak*_*aka 35
我遇到了同样的问题,找到了原因和解决方案.
如果查看iOS 6 SDK中NSManagedObject的头文件,您将看到"NS_REQUIRES_PROPERTY_DEFINITIONS",它强制类为属性指定@dynamic或@synthesize.
(您可以在iOS 5.1和iOS 6.0之间的API差异中看到NS_REQUIRES_PROPERTY_DEFINITIONS.)
这是因为编译器必须知道您是希望属性是动态的还是合成的,尤其是在NSManagedObject类的子类的实现中.
我只需在NSManagedObject子类中为@dynamic以外的属性显式添加@synthesize行就可以解决这个问题.