Objective-C クラスにstatic を追加したいのNSString
ですが、メモリの管理に不安があります。
NSString *myImportantString = 0;
@implementation MySingletonClass
/* Option 1 */
+ (void)initialize {
myImportantString = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"criticalFolder"];
}
/* Option 2 */
+ (void)initialize {
NSString *tmp = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"criticalFolder"];
myImportantString = [[NSString alloc] initWithString:tmp];
}
オプション 1 ではmyImportantString
、自動解放されたオブジェクトですが、いつどこで解放されるかを知るにはどうすればよいですか? この不確実性により、代わりにオプション 2 を使用するようになりました。ただし、ARC を使用しているため、どのように/いつ (もしあれば?) リリースされますか? メソッドによると、 は+initialize
メソッドでmyImportantString
再度使用されないため、ARCrelease
はメソッドの最後に適切なコードを挿入しません+initialize
か?
私は(比較的)正しく処理されると確信していますが、それでもどのように機能するか知りたいです.