>我想知道如果我做得正确,关于下面数字按钮引用的保留和发布。在"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:
中做的事情是不必要的。
不会解释为什么这是不必要的,而是直接指出我在哪里学习了正确的内存管理技术: 高级内存管理编程指南