SORU
17 ŞUBAT 2012, Cuma


Zayıf başvurular (__güvensiz_unretained) ARK altında nesneler için NSArray

Döngüleri önlemek korumak için bir NSArray nesnelere zayıf başvurular saklamak için ihtiyacım var. Kullanmak için doğru sözdizimi emin değilim. Bu doğru yol mu?

Foo* foo1 = [[Foo alloc] init];
Foo* foo2 = [[Foo alloc] init];

__unsafe_unretained Foo* weakFoo1 = foo1;
__unsafe_unretained Foo* weakFoo2 = foo2;

NSArray* someArray = [NSArray arrayWithObjects:weakFoo1, weakFoo2, nil];

İOS 4 desteği gerekiyor unutmayın.xböylece __unsafe_unretained yerine __weak.


EDİT(2015-02-18):

O __weak doğru işaretçileri kullanmak isteyen (__unsafe_unretained) için, lütfen bu soru yerine çıkış: Collections of zeroing weak references under ARC

CEVAP
17 ŞUBAT 2012, Cuma


Jason dediği gibi, NSArray zayıf başvurular deposu yapamazsın. Bunun için zayıf bir başvuruyu saklar, başka bir deyişle, bir nesne içinde sarma Emile önerisi uygulamak için en kolay yolu şudur:

NSValue *value = [NSValue valueWithNonretainedObject:myObj];
[array addObject:value];

Başka bir seçenek: NSMutableArray yapan category isteğe bağlı olarak depolamak zayıf başvuruyor.

Bu "güvensiz" başvurular, kendini sıfırlama, zayıf başvuruları. unretained unutmayın Eğer dizi nesneleri kaldırıldı sonra hala etrafında ise, önemsiz göstericiler bir grup olacak.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ash100HD

    Ash100HD

    29 EKİM 2011
  • whiteboy7thst

    whiteboy7ths

    1 Temmuz 2009
  • WiseOwlTutorials

    WiseOwlTutor

    21 EKİM 2011