Objective-C ARC: vs vs atamak güçlü ve zayıf korumak
Özellikleri strong
YAY ve weak
tarafından tanıtılan iki yeni bellek yönetim özellikleri vardır.
Açıkçası tamamen farklı bir şey, hangi copy
, dışındastrong
vs retain
weak
vs assign
arasında herhangi bir fark var mı?
Benim anlayış, tek fark burada weak
ata nil
işaretçi assign
olmayacak, yani programın kilitlenmesine zaman ben bir mesaj göndermek için işaretçiyi kez verilmedi. Ama eğer kullanırsam weak
, Bu hiç mesaj nil
göndermek hiç bir işe yaramaz çünkü, olmayacak.
strong
retain
arasında herhangi bir fark bilmiyorum.
Geçerli bir sebebi var mı yeni projeler assign
retain
kullanın, ya da onaylanmaz tür olacak?
CEVAP
Pek çok makale Stackoverflow mesajlar ve demo uygulamaları değişken özelliği özelliklerini kontrol etmek için okuduktan sonra, tüm öznitelikleri bilgileri bir araya koymaya karar verdim:
- //varsayılan atom
- nonatomic
- güçlü=//varsayılan korur
- zayıf
- korur
- //varsayılan olarak atayın
- unsafe_unretained
- kopyala
- salt okunur
- //varsayılan okumayazma
Aşağıda yukarıda bahsedilen tüm özellikleri bulabileceğiniz, kesinlikle size yardım edecek detaylı yazı link. En iyi veren herkese çok teşekkür ederim işte cevaplar!!
1.güçlü (iOS4 = tutmak )
- diyor ki, "buna artık bir nokta değilim kadar yığın içinde kalsın"
- diğer bir deyişle "ben sahibi Bayan olduğu gibi korumak amacı ile daha önce bu güzel dealloc olamaz"
- Eğer nesneyi korumak için gerekirse sadece güçlü kullanın.
- Varsayılan olarak tüm yerel değişkenler ve yerel değişkenler güçlü öğelerdir.
- Biz genellikle UİViewControllers (madde anne UI) için güçlü kullanın
- güçlü YAY ile kullanılan ve temel olarak , bir nesnenin sayısını korumak konusunda endişelenmenize gerek kalmadan yardımcı olur. ARC otomatik olarak bu işi size bırakır.Güçlü anahtar kelime kullanarak nesnenin sahibi anlamına gelir.
Örnek:
@property (strong, nonatomic) ViewController *viewController;
@synthesize viewController;
2.zayıf -
- diyor ki, "bu başka biri için şiddetle puan sürece devam et"
- hayır ata tutmak veya serbest bırakmak aynı şey
- Bir "zayıf" referans sizde olmayan bir referanstır.
- Biz genellikle İBOutlets (UİViewController var Childs) için zayıf kullanın.Bu alt nesne yalnızca mevcut ana nesne sürece ihtiyacı olduğu için çalışıyor.
- zayıf bir başvuru çöp toplayıcı tarafından koleksiyonundan başvurulan nesne korumayan bir referanstır.
- Zayıf, unretained bir özellik aslında atayın. Nesneyi ayırmanın dışında zayıf işaretçisini otomatik olarak sıfıra ayarlanır
Örnek :
@property (weak, nonatomic) IBOutlet UIButton *myButton;
@synthesize myButton;
Güçlü Ve Zayıf, Thanks to BJ Homer Açıklama:
Bizim nesne bir köpek, köpek de kaçıp gitmek istiyor düşünün. ( kaldırıldı).
Güçlü işaretçileri köpeğe bir tasma gibi. O var olduğu sürece tasma köpek bağlı, köpek kaçıp gitmez. Beş kişi ise bir köpek, (bir nesne için beş güçlü işaretçiler),kendi tasma takın sonra köpek beş tasmalar müstakil kadar kaçar.
Zayıf göstericiler, öte yandan, küçük çocuklar gibi işaret ediyor köpek ve şöyle diyordu: "Bak! Bir köpek!" Köpek hala üzerinde olduğu sürece, tasma, küçük çocuklar hala köpeği görebilir, ve hala bir işaret olacaktır bunun için. Bütün tasmalar müstakil olarak, olsa da, köpek çalışır o işaret ne kadar uzakta olursa olsun.
Son güçlü işaretçi (tasma) artık bir işaret olarak nesne, nesne kaldırıldı ve tüm zayıf işaretçiler olacak sıfır.
Ne zaman biz zayıf kullanmalısınız?
Zayıf kullanmak isterim, eğer döngüleri önlemek korumak istedim. (anne / baba çocuğun korur ve çocuğun ne kadar çıkacak şekilde üst korur gibi).
3.= güçlü tutmak
- korunur, eski değeri serbest bırakılır ve yeni değeri gönderilmelidir belirtir korumak atanır
- atama ve eski değeri-yayın gönderilen korur
- güçlü aynıdır korur.
- apple eğer yazarsanız bu dönüştürülmüş/çalışma otomatik gibi güçlü olacaktır koru diyor.
- yöntemleri "" örtülü vardır"" . korumak ayırma gibi
Örnek:
@property (nonatomic, retain) NSString *name;
@synthesize name;
4.atayın
- atama varsayılan ve sadece bir değişken atama gerçekleştirir
- ata tesisin ayarlayıcı uygulama sentez derleyici bildirir bir özellik niteliktir
- C ilkel özellikler atamak için kullanırdım ve zayıf başvurular için zayıf Objective-C nesneleri için.
Örnek:
@property (nonatomic, assign) NSString *address;
@synthesize address;
Objective-C 101 (vs atamak korumak) NS...
Güçlü arasındaki farklar ve Objective-...
Zayıf ve güçlü özellik ayarlayıcısı Ob...
Objective-C ilan için @özellik öznitel...
İBOutlets ARK altında güçlü ya da zayı...