• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 类别最佳做法

[复制链接]
菜鸟教程小白 发表于 2022-12-12 21:11:50 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在使用 categories 来处理一些我以前可能使用继承的事情。

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

类别:

@interface UIActivityIndicatorView (Customizations)
    - (UIActivityIndicatorView *) inViewUIView *) target;
@end

实现:

@implementation UIActivityIndicatorView (Customizations)

- (UIActivityIndicatorView *) inViewUIView *) 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)而只是让方法做样式。

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



Best Answer-推荐答案


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

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

但是,我的实现方式会略有不同:

- (void) addToSuperViewUIView *) 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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap