Cocoa touch 将静态字符串指定给属性,然后稍后释放它是否安全
我正在更新我的一个应用程序,我发现了一些老代码,这让我大吃一惊。我的评论通常相当冗长,但我没有向自己解释我为什么这么做 我正在演示一个ModalView并更新标题和UITextField,如下所示:Cocoa touch 将静态字符串指定给属性,然后稍后释放它是否安全,cocoa-touch,ios5,memory-management,modalviewcontroller,Cocoa Touch,Ios5,Memory Management,Modalviewcontroller,我正在更新我的一个应用程序,我发现了一些老代码,这让我大吃一惊。我的评论通常相当冗长,但我没有向自己解释我为什么这么做 我正在演示一个ModalView并更新标题和UITextField,如下所示: addStoryItem.placeholderText = @"Foo"; //The text is always a static string. addStoryItem.modalTitleText = @"Bar"; 在模态中,将为以下两个值指定特性: @property (read
addStoryItem.placeholderText = @"Foo"; //The text is always a static string.
addStoryItem.modalTitleText = @"Bar";
在模态中,将为以下两个值指定特性:
@property (readwrite, assign) NSString *placeholderText;
@property (readwrite, assign) NSString *modalTitleText;
然后在模式解除后,在模式的解除锁定中释放:
[placeholderText release];
[modalTitleText release];
这安全/明智/正常吗?我想我可能对他做了这件事 你违反了几条规则:
您可以通过避免保留周期来证明这一点。但是,由于字符串(通常)不引用其他对象,因此循环在这里不是问题。您违反了一些规则:
您可以通过避免保留周期来证明这一点。但是,由于字符串(通常)不引用其他对象,因此循环在这里不是问题。对字符串使用“复制”属性,就可以了。在这种情况下,使用“分配”是错误的。也没有保留周期,因为字符串没有对控制器的拥有引用。(应该怎么做?)对字符串使用“copy”属性,这样就可以了。在这种情况下,使用“分配”是错误的。也没有保留周期,因为字符串没有对控制器的拥有引用。(他们应该怎么做?)