私はフレームワークを書いていて、カスタム init メソッドを持つオブジェクトを持っています:
@implementation OSDatabase
@synthesize database;
// MEM
- (void)dealloc {
sqlite3_close(database);
[super dealloc];
}
// INIT
- (id)initWithDatabasePath:(NSString *)path error:(NSError **)error {
if (self = [super init]) {
if (!sqlite3_open_v2([path UTF8String], &database, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL)) {
error = [NSError errorWithDomain:@"OSDatabaseErrorDomain" code:1 userInfo:nil];
[self dealloc];
return nil;
}
}
return self;
}
@end
エラーが発生した場合、メソッドdealloc
内で呼び出しても安全ですか? init
これについてはよくわかりませんが、メモリ管理は私の人生で最も重要なことの 1 つです。
ありがとう。