gpt4 book ai didi

iphone - Objective-C初学者(发布)问题

转载 作者:搜寻专家 更新时间:2023-10-30 19:55:33 25 4
gpt4 key购买 nike

我刚刚开始学习 Objective-C。我读了 Cocoa Become an XCoder 一书,我想我学到了基础知识。现在,我正在关注一个在线教程,其中我遇到了这段代码:

@synthesize name;

- (IBAction)changeGreeting:(id)sender {
self.name = textInput.text;

NSString *nameString = name;
if([nameString length] == 0) {
nameString = @"Cartman";
}
NSString *greeting = [[NSString alloc]
initWithFormat:@"Hello, my name is %@!", nameString];
label.text = greeting;
[greeting release];
}

我的问题是,我们不应该在 *nameString 变量上也调用“release”吗?或者通过这样做我也会清理应该在'dealloc'方法中释放的'name'属性?因为如果我理解正确,我必须在这些函数末尾的函数内部的所有变量上调用“release”,但在类属性上我必须只在“dealloc”方法中调用“release”?

谢谢

最佳答案

仅释放您声称拥有所有权的对象。这意味着您设置为保留或复制的每个属性。不要释放分配的属性。

您通过发送 alloc、copy、new 或 mutableCopy 来声明所有权。看看Apple's Memory Management Programming Guide / Object Ownership and Disposal .如果您通过发送保留手动保留,您也应该释放。

关于这一点,您不必释放 nameString。

关于iphone - Objective-C初学者(发布)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6285798/

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