gpt4 book ai didi

ios - 类别最佳实践

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:49:56 24 4
gpt4 key购买 nike

我正在全神贯注地使用类别来处理一些我以前可能使用继承的事情。

我现在正在做的事情更像是一个最佳实践问题,我不确定如何应该实现它。我正在 UIActivityIndi​​catorView 上编写一个类别,它基本上将用于将事件指示器放在任意 View 中。您将在下面找到我如何做的代码示例,我的主要问题是这是否好。如果是这种情况,我将不胜感激评论为什么它不好。谢谢。

类别:

@interface UIActivityIndicatorView (Customizations)
- (UIActivityIndicatorView *) inView:(UIView *) target;
@end

实现:

@implementation UIActivityIndicatorView (Customizations)

- (UIActivityIndicatorView *) inView:(UIView *) target {
[self startAnimating];
[self setHidden:NO];
self.frame = target.bounds;
self.backgroundColor = [UIColor colorWithRed:0.0f green:0.0f blue:0.0f alpha:0.6f];

return self;
}
@end

然后我会这样使用它:

[background addSubview:[loader inView:background]];

我猜另一种方法是制作一个初始化函数来获取容器 View 并只返回“样式化” View ,或者可能不返回任何东西 (void) 并且只是让方法进行样式设置。

所以我正在寻找一些关于如何处理这个问题的指导。

最佳答案

What kind of worries me is that I am actually making a second copy of the UIActivityIndicatorView which seem unnecessary

不,你不知道。您可能会对从类别方法返回 self 这一事实感到困惑,但这只是一个指针,而不是被复制的对象本身。

但是,我会稍微不同地实现它:

- (void) addToSuperView:(UIView *) target {
[self startAnimating];
[self setHidden:NO];
self.frame = target.bounds;
self.backgroundColor = [UIColor colorWithRed:0.0f green:0.0f blue:0.0f alpha:0.6f];

[target addSubview:self];
}

这样,你就不需要在添加时进行额外的、不必要的调用:

[loader addToSuperView:background];

关于ios - 类别最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10754167/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com