ile bir belgeyi saklamak?Manuel ARC Önce ARC
24
A
cevap
10
Neden asenkronize görev süresi boyunca delege nesnesini güçlü bir ivar'a atamazsınız?
Ya da böyle executeAsyncWork
- (void)executeAsyncWork
{
id localCopy = _delegate;
if (localCopy != nil) // since this method is async, the delegate might have gone
{
// do work on local copy
}
}
3
Something yerel bir değişken vardır:
- (void)startAsyncWork
{
id<YourProtocol> delegate = _delegate;
dispatch_async(/* some queue */, ^{
// do work
[delegate doSomething];
}
}
gerektiği sürece temsilci koruyacaktır blok ...
31
Bazen ihtiyaç var (yalnızca hata ayıklamak için) öğeleri el ile saklamak ve bırakmak ve aşağıdaki makrolarla birlikte gelmek için:
#define AntiARCRetain(...) void *retainedThing = (__bridge_retained void *)__VA_ARGS__; retainedThing = retainedThing
#define AntiARCRelease(...) void *retainedThing = (__bridge void *) __VA_ARGS__; id unretainedThing = (__bridge_transfer id)retainedThing; unretainedThing = nil
__bridge_retained ve __bridge_transfer öğelerini kullanarak, işlerin korunmasına neden olan (void *) öğelere ve bunlardan korunmak için veya arama yapmadan güçlü bir başvuru oluşturmak için çalışır.
İyi eğlenceler, ama dikkatli olun!
İlgili konular
- 1. ARC
- 2. ARC
- 3. ARC
- 4. Arc
- 5. ARC
- 6. ARC
- 7. ARC
- 8. ARC
- 9. ARC
- 10. NON-ARC projesinde ARC statik kitaplığı kullanma
- 11. AVAudioPlayer, ARC
- 12. ARC olmayan projede bir dosya için ARC nasıl etkinleştirilir?
- 13. Bir ARC uygulamasında ARC olmayan kütüphane var mı?
- 14. ARC Uygulaması @property formuna erişirken çöküyor ARC static lib
- 15. performSelector ARC uyarı
- 16. `Rc`,` Box`, `Arc`
- 17. ARC bellek sızıntıları
- 18. ARC İçinde Döngüyü Koru
- 19. ARC olmadan Apple'ın Kullanılabilirliği
- 20. JSONValue ARC sorunu
- 21. ARC ve ASIHTTPRequest
- 22. iOS5 ARC hataları: SKPSMTPMessage
- 23. Swift'de ARC taşması olasılığı?
- 24. Çoklu kapanmada Arc nasıl paylaşılır
- 25. ARC Kaynakçı eylem çubuğunu keser
- 26. ARC, köprülü döküm ve GHUnit
- 27. ARC (Otomatik Referans Sayma) İşlemi
- 28. Bir Arc ve degrade çizin
- 29. "arc diff" yürütülemedi: Burada yapılandırmayı
- 30. ARC altındaki Cihazlarda Döngü bildirimi nasıl etkinleştirilir?
Teşekkür ederiz. Benim de ilk fikrim buydu. Başka bir düzgün hile olacağını umuyordum ;-). – Alexander
Orada, GCD kullanın! ;-) – hypercrypt
@hypercrypt: GCD, değişkeni asmak için bir çözüm değildir, ancak async çalışmasını gerçekten yapmak için özellikle iyi bir yoldur. – JeremyP