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

  • EEVblog2

    EEVblog2

    2 HAZİRAN 2014
  • jocc talking shit

    jocc talking

    6 NİSAN 2007
  • TV nEW

    TV nEW

    25 AĞUSTOS 2012