gpt4 book ai didi

iPhone内存管理问题和对象生命周期

转载 作者:行者123 更新时间:2023-12-03 17:37:16 25 4
gpt4 key购买 nike

这是我的代码:

手机SDK理解cocoa对象生命周期:

- (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++中删除?

最佳答案

performSelector 保留该对象,因此您的释放不会导致其保留计数变为零。

参见NSObject docs

此方法会保留接收者和 anArgument 参数,直到执行选择器为止。

关于iPhone内存管理问题和对象生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1515279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com