objc_setAssociatedObject
ご存知のように、カテゴリとやなどのランタイム メソッドを使用して、Objective-C に変数を追加できます
objc_getAssociatedObject
。例えば:
#import <objc/runtime.h>
@interface Person (EmailAddress)
@property (nonatomic, readwrite, copy) NSString *emailAddress;
@end
@implementation Person (EmailAddress)
static char emailAddressKey;
- (NSString *)emailAddress {
return objc_getAssociatedObject(self,
&emailAddressKey);
}
- (void)setEmailAddress:(NSString *)emailAddress {
objc_setAssociatedObject(self,
&emailAddressKey,
emailAddress,
OBJC_ASSOCIATION_COPY);
}
@end
しかし、誰かが何をしているのか、何をしているのか知っていますobjc_getAssociatedObject
かobjc_setAssociatedObject
? つまり、オブジェクトに追加する変数 (ここではself
) はどこに保存されているのでしょうか? self
変数と?の関係