ios - 用于转发到 Objective-C 中复制的属性的正确属性语义
<p><p>假设有一个 <code>UIView</code> 内部包含一个 <code>UILabel</code>。</p>
<p><code>UIView</code>的公共(public)界面在它的<code>.h</code>中如下:</p>
<pre><code>@interface MyView : UIView
@property (nonatomic, copy) NSString *text;
@end
</code></pre>
<p>并且私下在它的 <code>.m</code> 中:</p>
<pre><code>@interface MyView ()
@property (nonatomic, strong) UILabel coolLabel;
@end
</code></pre>
<p>在它的 <code>.m</code> 中实现:</p>
<pre><code>@implementation
- (void)setText:(NSString *)text
{
self.coolLabel.text = text;
}
- (NSString *)text
{
return self.coolLabel.text;
}
@end
</code></pre>
<p>查看公共(public)接口(interface),我用 <code>copy</code> 声明 <code>@property (nonatomic, copy) NSString *text</code> 因为文本是由 <code>coolLabel</code>内部。但是,我不确定这是否正确。</p>
<p>声明应该是 <code>@property (nonatomic, assign) NSString *text</code> 和一个 <code>assign</code> 因为我的类没有专门执行内存管理?还是我当前的接口(interface)声明正确?</p>
<p>仅供引用,一切都假设 <strong>ARC</strong></p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>你的 <code>text</code> 属性应该是 <code>copy</code> 因为它的值最终会被标签复制。</p>
<p><code>property</code> 定义就像一个契约(Contract)。您正在告诉属性的用户如何处理该值。由于标签复制了文本,因此您应该指出您的属性正在被复制。</p></p>
<p style="font-size: 20px;">关于ios - 用于转发到 Objective-C 中复制的属性的正确属性语义,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/23374464/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/23374464/
</a>
</p>
页:
[1]