4

objc_setAssociatedObjectクラスオブジェクトに使用するのは正しいですか?

次のような静的変数を使用してクラス変数をシミュレートすることがよくあります 。ObjectiveC静的クラスレベル変数です が、代替として関連オブジェクトを使用できますか?

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

1 に答える 1

5

はい、クラスオブジェクトは本格的なオブジェクトなので、通常のオブジェクトでできることなら何でもできます。

ただし、グローバル変数を使用する方が明確で簡単です。

ps関連付け[self class]は、グローバル変数を使用する場合と同じではありません。[self class]これは、現在のオブジェクトの実際のクラスを提供するためです。これは、このメソッドがサブクラスに継承されるため、異なる場合があります。一方、グローバル変数では、常に同じ変数になります。

于 2013-03-25T09:02:01.593 に答える