当某人在声明为已分配的属性上调用释放消息时,在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);
只是想确认一下,因为我没有那么多可以测试MRC的旧Xcode。
答案 0 :(得分:1)
我很确定它会给你一个编译器错误,因为int没有从NSObject继承,你不能在它上面调用release。
无论如何,如果你考虑具有弱属性的NSObject,它在调用release时不会立即崩溃,因为对象的原始所有者将对象引用计数增加到至少为1.当对象的所有者将被释放时是应用程序将崩溃,因为它将尝试释放该对象,因为它是所有者,但该对象已被解除分配,因为非所有者错误地减少了其引用计数。