ios - 类别最佳做法
<p><p>我正在使用 <em>categories</em> 来处理一些我以前可能使用继承的事情。</p>
<p>我现在正在做的事情更像是一个最佳实践问题,我不确定它应该如何<em></em>实现。我正在写一个关于 <code>UIActivityIndicatorView</code> 的类别,它基本上将用于将事件指示器放在任意 View 中。下面你会找到我如何做的代码示例,我的主要问题是这是否好。如果是这样的话,我会很感激评论为什么它很糟糕。谢谢。</p>
<p><strong>类别:</strong></p>
<pre><code>@interface UIActivityIndicatorView (Customizations)
- (UIActivityIndicatorView *) inView:(UIView *) target;
@end
</code></pre>
<p><strong>实现:</strong></p>
<pre><code>@implementation UIActivityIndicatorView (Customizations)
- (UIActivityIndicatorView *) inView:(UIView *) target {
;
;
self.frame = target.bounds;
self.backgroundColor = ;
return self;
}
@end
</code></pre>
<p><strong>那我会这样使用:</strong></p>
<pre><code>];
</code></pre>
<p>我猜另一种方法是创建一个初始化函数来获取容器 View 并仅返回“样式化” View ,或者可能不返回任何内容(<code>void</code>)而只是让方法做样式。</p>
<p>所以我正在寻找一些关于如何处理这个问题的指导。</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><blockquote>
<p>What kind of worries me is that I am actually making a second copy of the UIActivityIndicatorView which seem unnecessary</p>
</blockquote>
<p>不,你没有。您可能会对您从类别方法返回 self 的事实感到困惑,但这只是一个指针,而不是被复制的对象本身。</p>
<p>但是,我的实现方式会略有不同:</p>
<pre><code>- (void) addToSuperView:(UIView *) target {
;
;
self.frame = target.bounds;
self.backgroundColor = ;
;
}
</code></pre>
<p>这样,您在添加时不需要进行额外的、不必要的调用:</p>
<pre><code>;
</code></pre></p>
<p style="font-size: 20px;">关于ios - 类别最佳做法,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/10754167/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/10754167/
</a>
</p>
页:
[1]