内存保留和释放



>我想知道如果我做得正确,关于下面数字按钮引用的保留和发布。在"Stephen Kochan的Programming in Objective C"一书中,它用不同的示例在一个部分中说,像digitbutton一样,它持有对发送者持有的同一对象的引用,所以在发送者之间可能会在其他地方被释放,然后我会在释放的digitbutton上调用currenttitle方法,如果是这种情况。

所以在这里我调用了保留数字按钮,在使用后我调用了释放。好吧,这个例子可能不是真的,但这个概念有效吗?我应该练习保留以下示例中的对象吗?

我没有编写托管代码的经验。

- (IBAction)clickDigit:(id)sender {
    UIButton *digitButton = (UIButton*)sender;
    [digitButton retain];
    NSLog(@"%@",[digitButton currentTitle]);
    [[self displayOutput] setText:[digitButton currentTitle]];
    [digitButton release];
}

更新

的,这个例子是错误的;假设不是 id sender 是 NSString,而不是 UIButton,相同的 NSString,返回类型只是无效。然后,为了安全起见,我是否必须保留发件人NSString,以防有人持有其引用释放它。

注意:我没有使用 ARC。

你不需要保留和释放它。

你可以这样做

 - (IBAction)clickDigit:(UIButton *)sender 
 {
    NSLog(@"%@",[sender currentTitle]);
   [[self displayOutput] setText:[sender currentTitle]];
 }

你在clickDigit:中做的事情是不必要的。

不会解释为什么这是不必要的,而是直接指出我在哪里学习了正确的内存管理技术: 高级内存管理编程指南

最新更新