コンストラクタとデストラクタ

ソース

#import <objc/Object.h>
#import <stdio.h>

@interface Test : Object
- (id) init;
- (id) free;
@end

@implementation Test
- (id) init {
	[super init];
	printf("init\r\n");
	return self;
}
- (id) free {
	printf("free\r\n");
	return [super free];
}
@end

int main() {
	id obj = [[Test alloc] init];
	[obj free];

	return 0;
}

メモ

  • コンストラクタは、init。デストラクタは、free。2.0では dealloc ?
  • C++, JAVAみたく new ではコンストラクタは実行されない。明示的に init する。
  • デストラクタは、C++の delete みたく 明示的に free(dealloc) する。
    • JAVAみたく自動実行されない。
    • free(dealloc)後のメソッド実行はできない。

(追記)

  • [ [ alloc] init]; の代わりに [ new]; で コンストラクタが実行された。あまり見かけないので要調査です。