无法识别的选择器发送到实例 - 在setter方法上

Pra*_*nna 0 iphone cocoa objective-c

每次尝试在我的模型对象中设置任何变量的值时,都会收到"发送到实例的无法识别的选择器"错误,并且应用程序崩溃.这些伊娃已经合成,它们不是只读的.我已经检查过设置的值是否正确.

我不确定它是否与IB中的某些连接有关,我已经检查了重新检查.

一点额外的信息:我开始使用早期版本的Xcode进行开发,并使用相同的代码来处理该版本.

这是确切的错误消息:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFString setDistance:]: unrecognized selector sent to instance 0x380ce50'
2009-11-10 15:10:58.113 CabMeter[7432:207] Stack: (
    29303899,
    2457931593,
    29685819,
    29255286,
    29107906,
    11415,
    3140002,
    3149770,
    3199319,
    3236748,
    3170686,
    3230561,
    3179329,
    12452,
    3918761,
    3933474,
    4979284,
    4987529,
    3990121,
    2838067,
    2746396,
    2773173,
    37400273,
    29088640,
    29084744,
    37394317,
    37394514,
    2777091,
    9208,
    9062
)
Run Code Online (Sandbox Code Playgroud)

Pet*_*sey 7

这些伊娃已经合成,它们不是只读的.

我认为你将实例变量与属性混淆.属性是您通常合成和/或只读的属性,它们通常(但不一定)由实例变量支持.

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFString setDistance:]: unrecognized selector sent to instance 0x380ce50'
Run Code Online (Sandbox Code Playgroud)

这就是您应该阅读错误消息的原因.

没有setDistance:消息发送到模型对象 - 您将其发送到字符串.最有可能的是,您没有保留模型对象,就像您应该拥有的那样,之后不久就会使用相同的地址分配一个字符串.

查看内存管理规则,并查找您没有关注它们的位置.如果您的所有属性都设置正确,请确保您实际使用它们:常见的错误是直接分配给ivar:

myModel = [[[MyModel alloc] init] autorelease]

而不是通过财产:

self.myModel = [[[MyModel alloc] init] autorelease]
要么
[self setMyModel:[[[MyModel alloc] init] autorelease]]