SORU
10 Kasım 2010, ÇARŞAMBA


GCD bir blok içinde bir NSAutoreleasePool oluşturmak için ihtiyacınız var?

Sen bir arka plan iş parçacığı spawn veya bir NSOperationQueue bir NSOperation çalıştırmak normalde hiçbiri varsayılan olarak var olduğu için bu iş parçacığı veya işlem için bir NSAutoreleasePool oluşturmanız gerekir.

Aynı kural içinde yerleştirilen bir blok için geçerli Grand Central Dispatch ve sıra dışı bir ana iş parçacığı üzerinde çalışacak mı? Diğer bir deyişle, her blok içinde bir NSAutoreleasePool oluşturmak için gereken her şeyi ana sıranın dışında Merkez musunuz?

Benim sınırlı test, normalde arka plan iş parçacığı veya NSOperations ile görmek autoreleased nesneler için uyarılar konsol görmüyorum. Ancak, eğer birisi bu ifade nerede olduğunu gösterebilir misin? bu konuda kesin bir bilgi bulmak için görünmüyor olabilir.

CEVAP
10 Kasım 2010, ÇARŞAMBA


Aynı kural bir blok için geçerlidir Büyük bir Merkez içinde yer alıyor Sıra gönderme ve üzerinde çalışacak olmayan ana iş parçacığı? Yani, ihtiyacın var mı bir NSAutoreleasePool oluşturmak için içinde her şey için merkez blok ana sıranın dışında mı?

Grand central sıra başına autorelease yüzme havuzu otomatik olarak yönetecek gönderme. Ancak, susuz havuza olmak üzere bir garantisi yok; olabilir bir blok işlendikten sonra yüzlerce sonra olabilir (ama muhtemelen olmaz).

Eğer sadece birkaç nesneleri ayırma Yani, eğer, merak etmeyin. Eğer nesnelerin önemli sayıda ayrılırken ise, (ve hafıza kısıtlı bir çevre hedefliyoruz beri), ve havuzları oluşturma drene olmalıdır.

Belgeleri güncellendi.

https://developer.apple.com/library/ios/DOCUMENTATION/General/Conceptual/ConcurrencyProgrammingGuide/OperationQueues/OperationQueues.html#//apple_ref/doc/uid/TP40008091-CH102-SW1 bkz

Eğer taşınız daha Objective-C birkaç nesne daha oluşturursa, olabilir @autorelease bir blok içinde blok kod parçaları içine etmek istiyorum bu nesneler için bellek yönetimi ele. Merkez GCD rağmen sıralar kendi autorelease havuzları, hiçbir garanti yapmak zorunda o havuzlar boşaltılır. Eğer uygulama belleği ise kendi autorelease havuzu oluşturma kısıtlı ücretsiz sağlar daha düzenli aralıklarla autoreleased nesneler için bellek.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DJPixcell

    DJPixcell

    20 NİSAN 2007
  • fireflame65

    fireflame65

    27 Mart 2007
  • Justin Schenck

    Justin Schen

    24 Kasım 2006