SORU
19 Ocak 2012, PERŞEMBE


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
21 Mart 2013, PERŞEMBE


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:

  1. //varsayılan atom
  2. nonatomic
  3. güçlü=//varsayılan korur
  4. zayıf
  5. korur
  6. //varsayılan olarak atayın
  7. unsafe_unretained
  8. kopyala
  9. salt okunur
  10. //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!!

Variable property attributes or Modifiers in iOS

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;

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Manuel Vizcaino

    Manuel Vizca

    27 Mayıs 2008
  • michellefeng's channel

    michellefeng

    26 Kasım 2006
  • Sergio Lafuente Rubio

    Sergio Lafue

    11 Aralık 2008