2010-10-19 26 views
16
Şimdi bu boğucu olabilir ve ben de yazmak olabileceğini düşünüyorum

Sadece hızlı bir soru Müsaade yazılı int özelliklerini (obj-c öğrenme beri) aşağıdaki gibi, ben her zaman varsa ...@property?

@property(nonatomic, assign) int myValue; 

...

@property int myValue; 

Sadece merak

, ben

tüm iyi

... varsayılan davranıştır ve "nonatomic" kesirli daha hızlı olabilir "atamak" olduğunu biliyoruz

cevap

8

Eh, atomicity ilan sorusu siz açık olsun ayrı bir tanesidir varsayılan olan nitelikleri bildir. Birincisi, kodunuzun niteliğine bağlı olacaktır - mülkün tartışmalı multithread erişim olasılığı var mıdır? İkincisi ile ilgili olarak, çoğunlukla bir stil meselesidir, fakat genel olarak, açık bir netliğin yanında yanılmanız gerektiğini düşünüyorum. Hayatınızın kaç saniyesinin, bu ekstra tuş vuruşlarını yazmanın maliyeti nedir?

2

Nonatomik daha az kod üretir ve biraz daha hızlıdır. Katılıyorum, ancak çok ayrıntılı.

uygulama birkaç iş parçacığı kullanabilir, size garip hatalar karşılaştığınızda bu açık eleme koyduk memnuniyet duyarız ...

33
@property(nonatomic, assign) int myValue; 

@property int myValue; 

bir özellik için varsayılan atom olduğu aynı değildir (hiçbir açık anahtar kelime atomic yoktur). Yani ikinci örnek bir atomik özelliktir. İlkel bir özellik için, herhangi bir kilitlenme meydana gelip gelmediğini bilmiyorum, ancak muhtemelen bir bellek yazma engeli eklenecektir (yani, ayarlayıcı, değeri sadece önbelleğe değil, ana belleğe geri yazılmasını zorlayacaktır). Böylece atomik özellikler, nonatomik özelliklerden oldukça yavaştır. Bununla birlikte, programın toplam yürütme süresinin bir kısmı olarak, yine de çok küçük bir yüzdeyi temsil edebilirler. Kodunuzu profilinize kadar bilmezsiniz.

İlgili konular