菜鸟教程小白 发表于 2022-12-13 12:20:07

ios - 使用不受实例变量支持的属性


                                            <p><p>类.h:</p>

<pre><code>@property (strong, nonatomic) UIFont *font;
</code></pre>

<p>类.m:</p>

<pre><code>@interface Class()

@property (strong, nonatomic) UILabel *titleLabel;

@end

- (void)setFont:(UIFont *)font
{
    self.titleLabel.font = font;
}

- (UIFont *)font
{
    return self.titleLabel.font;
}
</code></pre>

<p>在此示例中,<code>Class.h</code> 中声明的 <code>font</code> 属性没有支持实例变量,因为两个访问器都被覆盖,而是用作“代理”到 <code>titleLabel.font</code> 上,否则无法从类外部访问,因为它不在公共(public)接口(interface)中。</p>

<p>这是对覆盖访问器的合法使用,还是这种方法存在缺陷?做属性属性,例如<code>strong</code>、<code>weak</code> 在这里有什么区别?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>你在这里做的很好。属性不必由 ivar 支持。</p>

<p>我已经编写了属性,其中 setter 和 getter 只需向 <code>NSUserDefaults</code> 写入/读取值。</p>

<p>至于这样的属性是<code>strong</code>还是<code>weak</code>等,你应该根据你希望提供给客户端的“合约”来判断属性(property)。在您发布的情况下,您应该使您的属性与您正在代理的属性相同(您正在为 <code>font</code> 执行此操作)。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 使用不受实例变量支持的属性,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/34324817/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/34324817/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 使用不受实例变量支持的属性