Objektif-c öğreniyorum ve @ sembolüne çarpmaya devam ediyorum. Farklı senaryolarda, örneğin bir dizenin başlangıcında veya erişimci yöntemlerini sentezlemek için kullanılır.
Objektif-c'de @ sembolü ne anlama geliyor?
Objektif-c öğreniyorum ve @ sembolüne çarpmaya devam ediyorum. Farklı senaryolarda, örneğin bir dizenin başlangıcında veya erişimci yöntemlerini sentezlemek için kullanılır.
Objektif-c'de @ sembolü ne anlama geliyor?
Yanıtlar:
@Bir bakıma Objective-C dili anahtar kelimeleri tanıtmak için kullanılan böylece karakter, C veya C ++ tanımlayıcıları kullanılmadığını olacak diğer dilde anahtar kelimelerle değil çatışma. Bu, dilin "Objective" kısmının C veya C ++ kısmıyla serbestçe karışmasını sağlar.
Bu nedenle, çok az istisna dışında, @bazı Objective-C kodlarında her gördüğünüzde , C veya C ++ yapıları yerine Objective-C yapılarına bakıyorsunuzdur.
Önemli istisnalar vardır id, Class, nil, ve Nil, genel olarak dil anahtar kelimeler olarak kabul edildiği onlar da bir sahip olsa bile typedefveya #definearkalarında. Örneğin, derleyici aslında idbildirimlere ve GC yazma engellerinin oluşturulup oluşturulmayacağına karar vermek için uyguladığı işaretçi türü dönüştürme kuralları açısından özel olarak davranır .
Diğer istisnalar vardır in, out, inout, oneway, byref, ve bycopy; bunlar Dağıtılmış Nesneleri daha verimli hale getirmek için yöntem parametresi ve dönüş türleri üzerinde depolama sınıfı ek açıklamaları olarak kullanılır. (Onlar DO nasıl en iyi serialize için bir işlem belirlemek için bakabilirsiniz çalışma zamanı, temin yöntemi imzanın parçası olurlar.) Özelliklerin, de vardır @propertybildirimleri, copy, retain, assign, readonly, readwrite, nonatomic, getter, ve setter; bunlar yalnızca bir @propertybildirimin öznitelik bölümünde geçerlidir .
@.
@O da mevcut C kodu ile% 100 uyumluluk korunmuş alternatif ayrıştırma için uygun bir “kaçış yolun” bu yüzden karakter, C kullanılmayan oldu.
Gönderen @ Sembol: Objective-C Öğreticisi , çeşitli anahtar kelimeler önündeki olduğunu sebeple:
@ Kullanmak, Objective-C derleyicisini mevcut bir C derleyicisine bağlamayı kolaylaştırmalıdır. @, C'de bir dize değişmez değeri dışında hiçbir bağlamda geçerli olmadığından, belirteç (derleyicideki erken ve basit bir adım), bir dize sabitinin dışındaki @ karakterini arayacak şekilde değiştirilebilir (belirteç dize değişmezlerini anlar , bu yüzden bunu ayırt edecek bir konumda). @ İle karşılaşıldığında tokenizer derleyicinin geri kalanını "Objective-C moduna" sokar. (Objective-C ayrıştırıcısı, Objective-C kodunun sonunu algıladığında derleyiciyi normal C moduna döndürmekten sorumlu olacaktır).
Ayrıca bir dize değişmezinin önünde göründüğünde, C'de bir 'char *' yerine bir NSString yapar.
Gönderen MacRumors: Objective-C Öğreticisi , ne zaman dize önünde:
@ "" NSString değişmez değerleri de var. Temelde NSString'in + stringWithUTF8String yöntemi için kısaltmadır.
@ Ayrıca C dizelerine unicode desteği de ekler.
Gönderen manuel :
Objective-C çerçeveleri genellikle C tarzı dizeler kullanmaz. Bunun yerine, dizeleri NSString nesneleri olarak geçirirler.
NSString sınıfı, rastgele uzunluklu dizeleri saklamak için yerleşik bellek yönetimi, Unicode desteği, printf tarzı biçimlendirme yardımcı programları ve daha fazlası dahil olmak üzere, beklediğiniz tüm avantajlara sahip dizeler için bir nesne sarmalayıcı sağlar. Bu tür dizeler yaygın olarak kullanıldığından, Objective-C sabit değerlerden NSString nesneleri oluşturmak için steno gösterimi sağlar. Bu stenoyu kullanmak için, aşağıdaki örneklerde gösterildiği gibi yapmanız gereken tek şey @ simgesiyle normal, çift tırnaklı bir dizedir:
NSString *myString = @"My String\n"; NSString *anotherString = [NSString stringWithFormat:@"%d %@", 1, @"String"];
@kullanıldığının sadece bir örneğidir . Böyle bir koda bakıyorum: mapperOptions = @{ kSTMapperVolumeResolutionKey: @(volumeResolution),... NSString ile ilgisi yok