【问题标题】:Is it correct to use objc_setAssociatedObject for class object?将 objc_setAssociatedObject 用于类对象是否正确?
【发布时间】:2013-03-14 14:24:28
【问题描述】:

类对象使用objc_setAssociatedObject是否正确?

我们经常使用这样的静态变量来模拟类变量: Objective C Static Class Level variables 但是,我们可以使用 Associated 对象作为替代吗?

objc_setAssociatedObject([self class], &STRING_KEY, myString, OBJC_ASSOCIATION_RETAIN);

【问题讨论】:

  • 是的,但是对于那些将维护您的代码的人来说,这将更难理解。当您需要添加动态组件数据但您不知道在编译时添加的确切类型的数据/名称时,您应该使用 objc_setAssociatedObject。如果你在编译时就知道了,你仍然可以使用旧的全局技术;)

标签: ios objective-c class static static-variables


【解决方案1】:

是的,类对象是一个成熟的对象,所以你可以对它做任何你可以用普通对象做的事情。

但是,使用全局变量更清晰、更简单。

附言将它与[self class] 关联与使用全局变量不同,因为[self class] 为您提供当前对象的实际类,这可能会因子类继承此方法而有所不同。而对于全局变量,它始终是同一个变量。

【讨论】:

  • 就我而言,我有一个包含许多子类的基类,每个子类都需要一个唯一的类 ivar(可以这么说),所以这对我来说实际上是完美的解决方案!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-09
  • 2022-07-23
  • 1970-01-01
  • 1970-01-01
  • 2014-08-05
  • 2010-10-03
  • 2021-06-16
相关资源
最近更新 更多