Başkaları için konuşamam ama aynı adı kullanmıyorum. Bir örnek değişkeni bildirirsek, bu durum önde gelen altçizgiyle olur, bu nedenle örnek değişkenine veya setter/getter yöntemine başvurduğum açıkça belli olur.
Xcode 4.4+ ile, örnek değişkenini bildirmeniz veya @synthesize
numaralı telefonu aramanız gerekmez ve derleyici otomatik olarak bir alt çizgi ile bir örnek değişkeni oluşturur ve sizin için setter/getter yöntemini sağlar. Bununla birlikte, bu mekanizmanın çok iyi bir fikir olduğunu sanmıyorum, çünkü geliştiricilerin, maruz kalmaması gereken sınıflarının özelliklerini açığa çıkarmaları konusunda teşvik ediyor.
Örneğin, bu itibaren iOS 6 Gelişim alınır: Ben bir kerede çok fazla kavramlarla bir acemi şaşırtmak istemiyorum anlamak ederken, Şimdi
@interface BIDViewController : UIViewController
@property (weak, nonatomic) IBOutlet UIButton *button;
- (IBAction)buttonPressed:(UIButton *)sender;
@end
, hemen sahip Nesne Odaklı Kapsülleme, hem UIButton
nesnesini hem de eylem yöntemini bu görünüm denetleyicisinin kullanıcılarına göstererek ve her ikisi de açığa çıkarılmamalıdır.
ne olur, örneğin, bir kullanarak sınıf yaparsa bu:
BIDViewController *vc = ...;
vc.button = nil;
veya
vc.buttonPressed(mySegmentedControl);
Tüm şey gevşek tatili. Şimdi bir programı kırmanın 1000 yolu varken ve bunların hepsine karşı savunamayız, zaten zayıf bir sistem yapmak istemiyoruz (Objective-C, kimin kime başvurabileceğini tanımlamak açısından çok az değerlidir) senin yöntemlerin) zayıf.
Yukarıdaki uygulama daha iyi her ikisi de Interface Builder tarafından onur duyuyoruz, özel örnek değişkenler ve yöntemler kullanılarak yapılır:
@implementation BIDViewController()
{
IBOutlet UIButton *_button;
}
- (IBAction)_buttonPressed:(UIButton *)sender;
@end
ve herhangi birini kullanarak sınıfları bu modeli kırma sert bir zamana sahip olacaktır.
Ama elbette bu bir geliştirici için daha fazla düşünmek ve yazmak, ve böylece Apple daha az zamanda ne yapmak istediklerini elde edebilmeleri için yeni özellikleri tanıttı (sadece bir çıkışa sürüklediğinizde çok az yazım var başlık dosyası ve hem beyanname hem de uygulama iskeleti sizin için sağlanmıştır).
dup: http://stackoverflow.com/questions/5555736/objective-c-why-do-we-declare-ivars-in-the-h-member-area- if-property-görünüyor- – justin