2011-12-09 6 views
1

どこかのコードに気づいた NSMutableString * myString = [[NSMutableString string] autorelease];[NSMutableString string]は[[NSMutableString string] autorelease]と同じですか?

それは過剰ですか?それは[NSMutableString string]と同じではないでしょうか?

+1

[所有していないオブジェクトの所有権を放棄してはいけません](http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmRules.html) – albertamg

答えて

5
NSMutableString *myString = [[NSMutableString string] autorelease]; 

は、他の場所でretainを呼び出さないとクラッシュする可能性があります。

[NSMutableString string] 

[[[NSMutableString alloc] init] autorelease] 
3

は私に右見ていないのと同じです。あなたが見た例が実際にこれをしていると確信していますか?

[NSMutableString string]だから、あなたが提供された例で、あなたがリリースを超えるとexc_bad_accessエラーになり

[[[[NSMutableString alloc] init] autorelease] autorelease] 

になるだろう

[[[NSMutableString alloc] init] autorelease] 

に相当します。

関連する問題