"Kodsuz" bu kodda ne anlama geliyor?
@property(nonatomic, retain) UITextField *theUsersName;
Atomic ve nonatomic arasındaki fark nedir?
Teşekkürler
"Kodsuz" bu kodda ne anlama geliyor?
@property(nonatomic, retain) UITextField *theUsersName;
Atomic ve nonatomic arasındaki fark nedir?
Teşekkürler
Yanıtlar:
Apple Dokümanlarına bir göz atın .
Temel olarak, diyor nonatomic
ve kullanarak erişimcileri oluşturursanız @synthesize
, birden çok iş parçacığı özelliği bir defada değiştirmeye / okumaya çalışırsa, kötülük olabilir. Kısmen yazılmış değerler veya aşırı serbest bırakılmış / tutulan nesneler alabilirsiniz, bu da kolayca çökmelere neden olabilir. (Bu potansiyel olarak bir atomik erişimciden çok daha hızlıdır.)
Varsayılanı kullanırsanız (yani atomic
; bunun için anahtar kelime yoktu, ancak şimdi var ), @synthesize
d yöntemleri tek bir özelliğe birden çok okuma / yazma işleminin serileştirilmesini sağlamak için nesne düzeyinde bir kilit kullanır. Apple belgeleri belirtildiği gibi, bu, tüm nesnenin iş parçacığı için güvenli olduğu anlamına gelmez , ancak tek tek özellik okuma / yazma özelliğidir.
Tabii ki, kullanmak yerine kendi erişimcilerinizi uygularsanız, @synthesize
bu bildirimlerin, mülkün güvenli bir şekilde uygulanıp uygulanmadığı konusundaki niyetinizi ifade etmek dışında hiçbir şey yapmadığını düşünüyorum.
atomic
, bireysel özelliklere erişirken çökmeleri önler, ancak nesnenin bir bütün olarak (yani ad ve soyadı gibi ayrı özelliklere erişerek) yapılmasını sağlamaz. doğru şey.
Çok sayıda Makale ve StackOverflow yayını okuduktan ve Değişken özellik özelliklerini kontrol etmek için demo uygulamaları yaptıktan sonra, tüm özellik bilgilerini bir araya getirmeye karar verdim
Aşağıda, size kesinlikle yardımcı olacak, yukarıda belirtilen tüm özellikleri bulabileceğiniz ayrıntılı makale bağlantısı bulunmaktadır. Burada en iyi cevapları veren herkese çok teşekkürler !!
Misal :
@property (retain) NSString *name;
@synthesize name;
Misal:
@property (nonatomic, retain) NSString *name;
@synthesize name;
İş parçacığı güvenliği hakkında söylenenlere ek olarak, atomik olmayan özellikler atomik erişimcilere göre daha hızlıdır. Bu genellikle endişelenmeniz gereken bir şey değildir, ancak aklınızda bulundurun. Temel Veri tarafından üretilen özellikler kısmen bu nedenle anatomik değildir.
"Atomik" belirtirseniz, oluşturulan erişim işlevlerinin eşzamanlı güncellemelere karşı korumak için bazı ekstra kodları vardır.
Genellikle atomik, özelliğe yazma / okuma işleminin tek bir işlem olarak gerçekleştiği anlamına gelir. Atomic_operation
Aşağıdaki makaleyi okuyarak bu malzemelerin üstesinden gelebilirsiniz.
Dişsizin Amacı İle Açıklanan Diş Açma
nonatomic - Güvenli değil
atomic - Thread Safe - Bu, varsayılan özellik özelliğidir.
"Atom” özelliğine erişim parçacığı güvenli olduğunu. İken araç 'nonatomic' bunun tersidir. Bu sentezlenmiş erişimcileri özelliğine sağlam erişim sağlar böylece özelliği varsayılan olarak atomiktir Objective-C bir mal beyanında zaman çok iş parçacıklı bir ortamda — yani, alıcıdan döndürülen veya ayarlayıcı aracılığıyla ayarlanan değer, diğer iş parçacıklarının aynı anda yürüttüğünden bağımsız olarak her zaman tam olarak alınır veya ayarlanır. Ancak özelliği aşağıdaki gibi anatomik olmayan olarak bildirirseniz
@property (nonatomic, retain) NSString *myString;
bir nesne özelliği için sentezlenmiş bir erişimcinin değeri doğrudan döndürmesi anlamına gelir. Atomik olmayan özelliğin etkisi çevreye bağlıdır. Varsayılan olarak, sentezlenen erişimciler atomiktir. Dolayısıyla atomik olmayan atomikten çok daha hızlıdır.
Biri çoklu iplikler içindir. Biri değil