2013-03-25 62 views
4

对类对象使用objc_setAssociatedObject是否正确?使用objc_setAssociatedObject类对象是否正确?

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

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

完全没有问题 – 2013-03-25 06:52:12

+0

是的,但对于那些会维护你的代码的人来说,这将更难理解。当您需要添加动态组件数据时,您应该使用objc_setAssociatedObject,但您不知道在编译时要添加什么样的数据/名称。如果你知道它在编译时,你仍然可以使用旧的全局技术;) – 2013-03-25 08:37:43

回答

5

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

但是,使用全局变量更清楚和更简单。

p.s.将它与[self class]相关联与使用全局变量不同,因为[self class]为您提供了当前对象的实际类,这可能随着此方法由子类继承而变化。而对于全局变量,它始终是相同的变量。

+0

在我的情况下,我有一个基类与许多子类,每个子类需要一个独特的类伊娃(可以这么说),所以这实际上是完美的解决方案! – 2014-04-11 14:08:39

相关问题