質問があります。
最初に NSObject を拡張するオブジェクトを作成し、description メソッドと dealloc メソッドのオーバーライドを提供しました。ここに私の Employee.m ファイルがあります:
@implementation Employee
.....
-(NSString *)description
{
return [NSString stringWithFormat:@"Employ ID: %d has $%d value of assets", [self employeeID], [self valueOfAssets]];
}
-(void)dealloc
{
NSLog(@"deallocating.. %@", self);
[super dealloc];
}
私の main.m では、最初に Employee オブジェクトのリストを保持するために NSMutableArray を作成しました。
NSMutableArray *employees = [[NSMutableArray alloc] init];
for (int i =0; i< 10; i++)
{
// Create an instance of Employee
Employee *person = [[Employee alloc] init];
// Give the instance varaible interesting values
[person setEmployeeID:i];
[employees addObject: person];
}
そして最後に従業員をnilに設定しました
employees = nil;
各 Employee オブジェクトのメソッドが呼び出されることを期待していたdealloc
ので、次のようなログが表示されます。
deallocating.. Employ ID 0 has value.....
deallocating.. Employ ID 2 has value.....
....
ただし、ログは表示されdealloc
ませんでした。メソッドにブレークポイントを設定すると、ブレークポイントに到達しません。
何かご意見は?