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

Ber*_*rgP 4 static class objective-c static-variables ios

objc_setAssociatedObject用于类对象是否正确?

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

objc_setAssociatedObject([self class], &STRING_KEY, myString, OBJC_ASSOCIATION_RETAIN);
Run Code Online (Sandbox Code Playgroud)

new*_*cct 5

是的,类对象是一个完整的对象,因此您可以对常规对象执行任何操作.

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

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