- (NSString *)associatedObject_copy {
return objc_getAssociatedObject(self, _cmd);
}
- (void)setAssociatedObject_copy:(NSString *)associatedObject_copy {
objc_setAssociatedObject(self, @selector(associatedObject_copy), associatedObject_copy, OBJC_ASSOCIATION_COPY_NONATOMIC);
}
上面这段代码中, _cmd
和 self
类似,只不过前者表示的是当前的SEL
。
第二个方法的第二个参数为什么不也用_cmd
呢?我理解的 _cmd
和@selector(当前方法)
不是一个意思吗?
为什么第一个方法的第二个参数用_cmd
,第二个方法的第二个参数却用@selector(xxx)
了啊?
希望能告知一二.....
啰嗦这么多:
其实我的问题主要是 在同一个方法里面,_cmd
和@selector(当前方法)
完全一样嘛?不一样,有什么区别?
Oleh kerana
key
yang sama mesti digunakan untuk mengikat penetap dan pengambil atribut yang sama, tetapi menggunakan_cmd
hanya boleh mendapatkan nama kaedah semasa, jadi anda mesti atau mendapatkey
yang sama seperti di atas dalam kaedah yang ditetapkan . 🎜>,_cmd
juga merupakan parameter jenisSEL
dan sama dengan@selector(xxx)
Parameter kedua objc_getAssociatedObject dan objc_setAssociatedObject hanyalah kunci
Sudah tentu, anda boleh menggunakan @selector() sebagai parameter Intipatinya juga merupakan id tetap. Anda juga mengatakan di atas bahawa
_cmd
anda juga merupakan SEL, parameter kedua bagi objc_setAssociatedObject anda _cmd Betul, penggunaan umum ditakrifkan seperti berikut:_cmd hanya boleh mendapatkan nama kaedah semasa Jika anda juga menggunakan _cmd dalam set, anda akan mendapat "setAssociatedObject_copy".