【发布时间】:2015-02-20 20:42:10
【问题描述】:
我想知道为什么将值分配给另一个类中的属性会导致 EXC_BAD_ACCESS。我似乎无法弄清楚为什么。
1.) 发送到 setter 的值不是 nil; 2.) 尝试赋值时,发生EXC_BAD_ACCESS,变量为nil;
在 Cocoa 和 Cocoa Touch 应用程序中使用这种模式都会导致 EXC_BAD_ACCESS,所以我不认为这是平台问题,但我相信这是我正在使用的模式。
我的问题是,是在分配变量时,还是我创建属性的方式?
我创建了一个虚拟项目,如下图所示。
感谢任何帮助。
编辑:进行一些挖掘,我将设置器变量的名称(不是属性名称)更改为 firstName__。基本上,setFirstName 的 setter 中的代码:
- (void)setFirstName:(NSString *)firstName__
{
self.firstName = firstName__;
}
通过说 firstName__(而不是 self.firstName)等于 nil 来消除一些混乱,即使在 AppDelegate 中,该值不是 nil。
【问题讨论】:
-
忘了说,我可以通过在 AppDelegate 中使用相同的设置器并在 PersonInfo.m 中删除它们并添加 @synthesize firstName, lastName; 来获得所需的结果;打电话。
-
AFAIK,您不再需要创建 setter/gettings 或合成它们。只需将属性添加到标题中,就可以了。如果您想在设置变量时执行其他操作,则需要覆盖设置器。
标签: objective-c cocoa properties crash null