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

  • ETrade Supply

    ETrade Suppl

    23 Temmuz 2011
  • We've moved!

    We've moved!

    7 Ocak 2008
  • KSI

    KSI

    25 Temmuz 2009