2016-11-07 4 views
0

誰かが割り当てとして宣言されたプロパティでリリースメッセージを呼び出したときにMRCで何が起こったか。 .MのviewDidLoadメソッドで割り当てプロパティで解放

@property (assign) int count; 

:.hファイルで

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

はちょうど私がMRCをテストすることが可能なそれほど古いXcodeのを持っていないので、確認したいです。

+0

'int' varの' release'ですか?イベントの仕組みを理解していないので、警告が表示されます。 – Larme

+0

intがNSObjectから継承していないので、コンパイラエラーが発生することは間違いありません。リリースを呼び出すことはできません。 – Windindi

+0

@Windindi:答えとして書く。 –

答えて

1

intがNSObjectから継承しないため、コンパイラエラーが発生することは間違いありません。リリースを呼び出すことはできません。

弱いプロパティを持つNSObjectを考えると、オブジェクトの元の所有者がオブジェクト参照カウントをatleast1にインクリメントしたため、releaseを呼び出すとすぐにクラッシュすることはありません。非所有者が間違って参照カウントを減らしたため、オブジェクトは所有者であるオブジェクトを解放しようとしますが、オブジェクトは解放されたため、アプリケーションがクラッシュします。

関連する問題