分配时发布 属性

Release on assign property

当有人在 属性 上调用发布消息时 MRC 中发生了什么,声明为分配。

在 .h 文件中:

@property (assign) int count;

在 .m viewDidLoad 方法中:

_count = 10;
NSLog(_count);
[_count release]; // According to me it may give EXC_BAD_ACCESS
NSLog(_count);

只是想确认一下,因为我没有那么多旧的 Xcode 可以测试 MRC。

我很确定它会给你一个编译器错误,因为 int 不是从 NSObject 继承的,你不能在它上面调用 release。

无论如何,如果你考虑一个 NSObject 弱 属性 它不会在你调用 release 时立即崩溃,因为对象的原始所有者将对象引用计数增加到至少 1。当对象的所有者will be deallocated 是应用程序崩溃的时间,因为它会尝试释放对象,因为它是所有者,但对象被释放是因为非所有者错误地减少了它的引用计数。