2012-02-03 11 views
5

'u kullanmamın nedenini anlıyorum, ancak neden atamayı kullanmalıyım? (yanında döngüleri korumak önlemek için)Atama c'de ne zaman atamalıyım?

[DÜZENLEME] i doğru https://stackoverflow.com/questions... tarihinde Chuck'ın cevap anlamak eğer atama kullanmak hiç değişken kapsamını kaybedecek zaman Yani, yöntemin kapsamı dışında alır sonra sadece düzenli C-tipi dil davranışında olduğu gibi?

+2

Burada iyi bir yanıt ile benzer bir soru var: http://stackoverflow.com/questions/1380338/objective-c-101-retain-vs-assign-nsstring – RaysonK

+0

@RaysonK çok kötü cevapların hiçbiri kabul edilmedi . – crashmstr

+0

varsayılan atamaz mı benim asıl soruya – stackoverflow

cevap

12

Nesne olmayan şeyler atamalısınız. Herhangi bir C tipi (int, float, char, double, struct ve enum gibi) atanmalıdır. Aklıma

+0

ve önemli delege – vikingosegundo

+0

bir düzenleme eklendi? – stackoverflow

+0

bir düzenleme eklendi benim orijinal soru –

2

Birkaç örnek:

  1. Bu bir nesne değil. Bu BOOL,
  2. temsilci özellikleri atanır Çoğu kez bir amacı değildir
+0

delege –

1
  1. şey (döngüleri önlemek için) int
  2. temsilciler üst düzeyde değildir
  3. IBOutlets (yani Bu görünümler tarafından zaten korunduğu için görüşler)
+0

eklendi zayıftır atamak UIWebViewDelegate olduğunu Orijinal soruma bir bakış – stackoverflow

1

Bağlantılı sorudan Chuck'ın yanıtının doğru olduğunu varsayarsak, Objective-C'de gerçekten bir "kapsam" yoktur. Görünüşe göre, assign'u ints veya BOOL gibi herhangi bir temel öğe için kullanmanız gerekir. Sahip olmanız gereken herhangi bir şey varsa, retain'u (veya Chuck'ın açıkladığı gibi diğer komutları) kullanın.

+0

Tamam. İlkellere atamaya ihtiyacım olduğunu anlıyorum. Şimdi bir nesne için atamayı kullanırsam ne olur? Bu nesnenin daha önce korunmadığı taktirde kullanımının geçerli olduğu garanti edilmediğini mi söylüyorsunuz? – stackoverflow

+0

Bundan emin değilim çünkü bu, diğer kullanıcının söylediği şeyden çıkıyor, ama söyleyebileceğim gibi, söz konusu değişkenin ne zaman kullanıldığına karar vermek için programa bırakıyorsunuz. Eğer birisi yanlışsam beni düzeltin, ama bence 'atama' sadece değişkenin değerini değiştireceğiniz anlamına gelir. – RaysonK

İlgili konular