SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dave Wallace

    Dave Wallace

    27 Kasım 2007
  • LivestrongWoman

    LivestrongWo

    1 Aralık 2011
  • paikimchung

    paikimchung

    12 Mayıs 2006