BizViewと呼ばれるUIViewをサブクラス化するクラスがあります。そして私は次のコードを持っています
@property (nonatomic, retain)BizView * bizPlace;
/
@synthesize bizPlace = _bizPlace;
-(void) showBiz
{
BizView * biz = [[BizView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 30.0)];
self.bizPlace = biz;
[biz release];
self.bizPlace.delegate = self;
[self.bizPlace doStuff];
}
-(void) removeBizView
{
[self.bizPlace removeFromSuperview];
self.bizPlace = nil; //****** this does not call the dealloc of bizPlace
// [_bizPlace release]; >>>>>>this does call the dealloc
[self performSelector:@selector(showBiz) withObject:nil afterDelay:1];
}
//biz view delegates
-(void)didBizStuff:(BizView *)bView
{
[self.view addSubview:_bizPlace];
[self performSelector:@selector(removeBizView) withObject:nil afterDelay:1];
}
-(void)dealloc
{
self.bizPlace = nil;
[super dealloc];
}
インターネット上のドキュメントやさまざまな記事によると、self.bizPlace = nilを設定すると、bizPlaceのdeallocが呼び出されますが、ここではそうではありません。ただし、[_bizPlacerelease]を呼び出すことはできます。これの理由は何でしょうか?