这是我的代码:
Phone SDK undestanding cocoa object live cycle:
- (void) DismissWelcomeMessage: (UIAlertView *) view
{
[view dismissWithClickedButtonIndex:0 animated:YES];
}
- (void) ShowWelcomeMessage
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Blah" message:@"Blah Blah" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[self performSelector:@selector (DismissWelcomeMessage:) withObject: alert afterDelay: WELCOME_MESSAGE_DELAY];
[alert release];
}
首先调用ShowWelcomeMessage。
为什么DissmissWelcomeMessage工作正常,即使释放警报对象也不会崩溃?
是因为Dismiss函数在函数时使用在堆栈上传递的对象的副本作为参数?但即便如此,它不仅仅是指向现在解除分配对象的指针的副本吗?
或[警告发布]只是描述引用计数,并没有真正做同样的事情 在C ++中删除?
答案 0 :(得分:3)
答案 1 :(得分:0)
performSelector可能会保留传入的对象,这就是为什么在调用DismissWelcomeMessage时它仍然有效。