加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

iphone – 在不重复代码的情况下执行init的最佳方法?

发布时间:2020-12-14 18:00:26 所属栏目:百科 来源:网络整理
导读:每个视图类都有多个init方法 – 已经作为UIView的一部分包含的方法,然后是其他方法 – 并且每个方法都以相同的方式设置相同的元素.因此我通常让它们都运行[self initialSetup];方法,包括设置所有这些元素. 我遇到的问题是,如果一个子类也有一个initialSetup
每个视图类都有多个init方法 – 已经作为UIView的一部分包含的方法,然后是其他方法 – 并且每个方法都以相同的方式设置相同的元素.因此我通常让它们都运行[self initialSetup];方法,包括设置所有这些元素.

我遇到的问题是,如果一个子类也有一个initialSetup方法,它将覆盖超类的initialSetup方法,因此超类必须将该方法公开才能仍然起作用.这会导致组织问题,因为除了init之外永远不应该调用该方法,因此没有理由公开.

解决方法

你遇到了一个问题,那就是没有完美的解决办法.理想情况下,您可以使用的方法不能在正常意义上进行子类化,只能访问该类精确类型的实例.

如果这是一种风险,通常的做法似乎是将类名合并到setup方法中.因此,您不必使用initialSetup,而是使用myViewSubclassInitialSetup.

您还可以在方法的顶部添加这样的内容:

NSAssert([self isMemberOfClass:[ThisClass class]],@"IniitalSetup called by sub- or superclass")

然后,如果子类或超类最终调用init方法,则调试版本将引发异常.这将为您提供断点和堆栈跟踪的位置,以便您可以非常快速地找到问题.

它不会向您的发布版本添加任何代码.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读