0

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

- (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,并且返回类型只是 void。那么我是否必须保留发件人 NSString 以防万一持有其引用的人释放它。注意:我没有使用 ARC

4

2 回答 2

3

你不需要保留和释放它。

你可以这样做

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

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

 }
于 2012-07-02T05:16:29.603 回答
0

你在做什么clickDigit:是不必要的。

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

于 2012-07-02T03:50:13.403 回答