17 Mayıs 2010, PAZARTESİ
Nasıl bir nesne içinde objc_setAssociatedObject/objc_getAssociatedObject kullanırım?
Eğer kullanmak objc_setAssociatedObject/objc_getAssociatedObject içinde bir kategori uygulanması için mağaza simüle örnek değişken bir ayarlayıcı yöntemi, nasıl ki erişim anahtarı alıcı yöntem bu yana herhangi bir değişken ilan kurucu yöntemi olurdu kapsamı dışında kalan alıcı bir yöntem midir?
Düzenleme:Açıklığa kavuşturmak için, aşağıdaki desen eklemek isterseniz, nerede ayarlayıcı ve alıcı yöntemi de kullanabilirim böylece STRİNG_KEY ilan edeyim.
@interface NSView (simulateVar)
-(void)setSimualtedString:(NSString *)myString;
-(NSString *)simulatedString;
@end
@implementation NSView (simulateVar)
-(void)setSimualtedString: (NSString *)myString
{
objc_setAssociatedObject(self, &STRING_KEY, myString, OBJC_ASSOCIATION_RETAIN);
}
-(NSString *)simulatedString
{
return (NSString *)objc_getAssociatedObject(self, &STRING_KEY);
}
@end
CEVAP
21 Mayıs 2010, Cuma
Onun kullanabilmek için statik bir değişken bildirinAdresanahtar olarak. Objc_setAssociatedObject çağrısı statik değişkenin adresi aslında kullanılır* bir boşluk, bir NSString içeriğini değil alır... bu hafıza kaybına yol.
Sadece eklemek gerekir:
static char STRING_KEY; // global 0 initialization is fine here, no
// need to change it since the value of the
// variable is not used, just the address
Bunu Paylaş:
Nasıl "bu" JavaScript bir ne...
Bir döngü içinde nesne harfleri bir di...
nasıl Interface Builder içinde UİScrol...
Nasıl bir Python nesne içinde mi görün...
Nasıl sil foreach döngü içinde dizi ne...