Semantik Sayı: Mülk'In sentezlenmiş alıcı 'sahibi' nesneleri döndürmek için Kakao adlandırma kuralı aşağıdaki gibidir
Şu anda iOS 5 SDK benim app geliştirmek için çalışıyoruz kullanıyorum. Bir NSString bir özellik yapmak için, ve sonra sentezlemek için çalışıyorum .m dosyası (hiçbir sorunları ile bunu daha önce de yaptım). Şimdi, bu noktaya geldim: "Anlam Sorunu: Tesisin sentezlenmiş alıcı dönen '' nesneler." sahip olduğu için Kakao adlandırma kuralı aşağıdaki gibidir
Bu benim kod: .h
@interface ViewController : UIViewController {
NSString *newTitle;
}
@property (strong, nonatomic) NSString *newTitle;
.m
@synthesize newTitle;
Herkes bunu halledebilirim bir fikri olan var mı? Teşekkürler!!
CEVAP
Benim tahminim kullandığınız derleyici sürümü ilan özellikleri set: . için bildirilen özellikleri the memory management rules de — özellikle izler,
Sana başlayan bir yöntemi kullanarak oluşturun eğer bir nesnenin sahipliğini“”,“”, “” veya“”. mutableCopy kopyasını yeni tahsis
Bir özelliği sentezlenmiş newTitle
,, adlı bir yöntem -newTitle
, Bu yüzden uyarı/hata denilen verir. -newTitle
olması gerekiyor alıcı yöntemi newTitle
özellik, ancak adlandırma kuralları devlet bir yöntem olan adı ile başlıyor new
bir nesne döndürür bu köpeği arayan, hangi durumda getter metotları.
Bunu çözmek için:
Bu özelliği yeniden adlandırma:
@property (strong, nonatomic) NSString *theNewTitle;
Özellik adı tutmak ve özel bir yöntem ile başlamayan alıcı adı belirterek önekleri adı:
@property (strong, nonatomic, getter=theNewTitle) NSString *newTitle;
Tutma özelliği adı ve alıcı adı ve söyleyen derleyici bile olsa alıcı adı ile başlar
new
aittirnone
yöntem aile karşıt olaraknew
yöntem aile:#ifndef __has_attribute #define __has_attribute(x) 0 // Compatibility with non-clang compilers #endif #if __has_attribute(objc_method_family) #define BV_OBJC_METHOD_FAMILY_NONE __attribute__((objc_method_family(none))) #else #define BV_OBJC_METHOD_FAMILY_NONE #endif @interface ViewController : UIViewController @property (strong, nonatomic) NSString *newTitle; - (NSString *)newTitle BV_OBJC_METHOD_FAMILY_NONE; @end
Not o halde bu çözüm sağlar sana devam et
newTitle
Her iki özellik adı ve alıcı adı, sahip bir yöntem olarak adlandırılan-newTitle
gelmez geri bir nesne tarafından sahip olunan arayan olabilir kafa karıştırıcı için diğer insanların okuma kodu.
Kayıt için Apple olan devlet Transitioning to ARC Release Notes, yayınladı:
Özelliği
new
copy
ile başlayan bir isim veremezsiniz.
Zaten onların ifadesi çok doğru olmadığını haberdar oldum: suçlu alıcı yöntem adı, özellik adı değil.
17 Ocak 2015 Düzenleme:Ben sadece fark bir recent commit to Clang düşündürmektedir seçenek 3 yukarıda (kullanarak objc_method_family(none)
), dahil olmak üzere, bir tamirci, genel durumunda bir özellik adıyla bir özel yöntem aile önekler. Böyle büyük mükafat büyük olasılıkla bu değişiklik eninde sonunda gelecektir.
Boolean bir alan için, alıcı/ayarlayıc...
Değişken ve işlev adları için Python a...
C# sabitler için adlandırma kuralı?...
REST API için herhangi bir adlandırma ...
XML öğeleri için standart bir adlandır...