无法使用新的Xcode 6推出应用程序

时间:2014-09-19 05:33:23

标签: ios objective-c xcode6

我的应用程序工作正常,直到我下载新的Xcode,现在它被错误“信号SIGABRT”停止并指出:

[PlaceHolder setDescription:]: unrecognized selector sent to instance 0x79838900
    Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[PlaceHolder setDescription:]: unrecognized selector sent to instance 0x79838900'

我知道,这些信息可能不足以理解发生了什么,但我不知道从哪里开始搜索。如果setter方法有错误,为什么我的应用程序之前有效?是否有任何新的更改阻止应用启动?

PlaceHolder是一个对象,它包含属性(如图像链接,文本等)。 此外,还有一个新的“黄色”警告 - Auto property synthesis will not synthesize property 'description' because it is 'read-write' but it will be synthesized 'read-only' via another property

2 个答案:

答案 0 :(得分:10)

您似乎已定义了description属性。很遗憾,NSObject已有description方法。由于您可能不是故意在子类中尝试覆盖此方法,因此这可能不是一个安全的操作。看起来在iOS 7 SDK和Xcode 5下,您的属性替换了NSObject上的方法。在iOS 8 SDK和Xcode 6中并非如此(可能是由于-description方法的定义方式发生了变化),因此您会得到不同的行为。

考虑重命名此属性以避免此类冲突。 description是一个非常有用的调试工具,您可能不想意外地放弃这个类。

答案 1 :(得分:8)

非常感谢您的帮助。

描述是PlaceHolder类的属性:

@property (nonatomic, retain) NSString *description;

简单地将@synthesize description;放在PlaceHolder类的实现(.m)文件中解决了问题。出于某种原因,新的Xcode通过"只读"属性,并导致SIGBART错误,因为app尝试写入此属性(由于某种原因只读取)。

我希望这些信息可能对面临类似问题的人有所帮助。