2016-11-07 67 views
0

当某人在被宣布为分配的财产上调用发布消息时,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。

+0

'int' var'release'?我不明白它应该如何工作,它应该给你一个警告。 – Larme

+0

我很确定它会给你一个编译器错误,因为int不会从NSObject继承,你不能调用它的释放。 – Windindi

+0

@Windindi:将其写为答案。 –

回答

1

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

不管怎么说,如果你考虑一个具有弱属性的NSObject,当你调用release时不会立即崩溃,因为对象的原始拥有者会将对象引用计数递增到atleast 1.当对象的所有者将被释放时该应用程序将崩溃,因为它会尝试释放该对象,因为它是所有者,但该对象被释放,因为非所有者错误地减少了引用计数。