【问题标题】:Using a different Superclass, instead of NSObject使用不同的超类,而不是 NSObject
【发布时间】:2012-07-16 23:29:06
【问题描述】:

这可能是一个直截了当的答案,而且我知道您在创建新类时没有将 NSObject 设置为超类。

但是,例如,我想创建一个包含一组自定义 CABasicAnimations 的类。虽然我可以使用 CABasicAnimation 作为超类,但是否建议我遵循不成文的规则仍然使用 NSObject 或者如果您正在编写这样的类,您会使用 CABasicAnimation 作为超类吗?

我认为只要类只包含与 CABasicAnimation 相关的属性和方法,这并不重要。

你的想法会很有趣!

【问题讨论】:

  • CABasicAnimation 已经(间接地)继承了NSObject,所以如果你从CABasicAnimation 继承,你就会被覆盖。还是我误解了你的问题?
  • 我的问题是指其他开发人员的偏好,而不是什么有效
  • 我想我的观点是,通过继承 CABasicAnimation,您已经匹配其他开发人员的偏好。当他们说“你应该总是继承NSObject”时,他们会在括号中包含“(或为你继承NSObject的东西)”。
  • 事实上,您根本不必设置超类——通过不指定超类,您正在创建一个新的根类。可能不是您想要的。

标签: objective-c class nsobject superclass


【解决方案1】:

规则是对您尝试扩展的任何对象进行子类化。 NSObject 用于许多子类,因为它是根对象,但如果我要编写一个与 NSTableView 非常相似的类,那么我会继承 NSTableView。

在您的情况下,如果您正在编写要调用的自定义动画,那么您应该考虑从 CABasicAnimation 继承。另一方面,如果你的动画真的只是预先存在的 CA 动画的集合,那么 NSObject 就可以了。

【讨论】:

    【解决方案2】:

    拥有一组自定义 CABasicAnimations 的类。

    在这种情况下,我想使用 Category 而不是 Subclass

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-25
      • 1970-01-01
      相关资源
      最近更新 更多