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

  • Edgar flores

    Edgar flores

    7 HAZİRAN 2006
  • FattySpins's channel

    FattySpins's

    17 Mayıs 2009
  • xSammyJoe1

    xSammyJoe1

    19 Temmuz 2011