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か?
私は(比較的)正しく処理されると確信していますが、それでもどのように機能するか知りたいです.