菜鸟教程小白 发表于 2022-12-12 14:31:00

ios - 在初始化程序中设置父类(super class)中定义的属性


                                            <p><p>据我所知,在 <code>init</code> 中设置值的一般经验法则是直接使用 ivars。</p>

<p>例如</p>

<pre><code>@interface CustomClass

@property (nonatomic, strong) NSString *name;

@end
</code></pre>

<p>然后:</p>

<pre><code>- (instancetype)initWithName:(NSString *)name
{
    if (self = ) {
      _name = name;
    }

    return self;
}
</code></pre>

<p>到目前为止,一切都很好。我对稍微不同的情况感兴趣。假设您正在对 UIView 进行子类化,并且在初始化程序中您想为该子类分配背景颜色。这里,属性 <code>backgroundColor</code> 是在父类中定义的。我的问题是:在初始化程序中使用 <code>self</code> 是不好的风格还是可能是错误的?将背景颜色设置在其他地方会更好吗?</p>

<pre><code>- (instancetype)initWithFrame:(CGRect)frame
{
    if (self = ) {
      self.backgroundColor = ;
    }

    return self;
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我相信你在那里所做的一切都很好。此时调用<code>super.init</code>后,<code>self</code>存在,可以使用(你也是调用<code>return self</code>,所以为什么其他对 <code>self</code> 的引用会出错?)。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 在初始化程序中设置父类(super class)中定义的属性,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/48284496/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/48284496/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 在初始化程序中设置父类(super class)中定义的属性