内存保留和释放

时间:2012-07-02 03:41:03

标签: iphone objective-c memory-management

我想知道,如果我做得正确,关于保留和释放数字按钮请参阅下面的内容。在“用stephen kochan在目标C中编程”一书中,它在一个部分中用不同的例子说,就像数字按钮持有对发送者持有的同一对象的引用,所以在发送者之间可能会在其他地方发布然后我会调用currenttitle方法在解除分配的数字按钮上,如果是这样的话。所以我在这里称为数字按钮上的保留,在使用之后,我在其上调用了发布。好的例子可能不是真正的这个目的,但这个概念有效吗?我是否应该练习保留下面示例中的对象?如果我错了你能帮助我吗?我没有编写托管代码的经验。

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

格拉西亚斯。

是的,例子是错的,让我们说如果不是id发送者而是NSString而不是UIButton,相同的NSString,并且返回类型只是无效。然后我必须保留发送者NSString以确保安全,以防有人持有其引用它。 注意:我没有使用ARC

2 个答案:

答案 0 :(得分:3)

你不需要保留和;释放它。你可以这样做

 - (IBAction)clickDigit:(UIButton *)sender 
 {

    NSLog(@"%@",[sender currentTitle]);
   [[self displayOutput] setText:[sender currentTitle]];

 }

答案 1 :(得分:0)

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

我没有解释为什么没有必要,我会直接指出我在哪里学习了适当的内存管理技术:Advanced Memory Management Programming Guide