2016-03-23 16 views
1

. Benim AppDelegate.h dosyasına düğmesinden tıklama sürükle kontrol ettiğindeIBAction'ın gönderen türü neden kimlikli olmalı? Ben "hemen şimdi (Objective-C baskı), Mac OS X için Kakao Programlama" Ben Interface Builder ile bir düğme oluşturmak zaman ve ben şu anda ile çalışıyorum sınıflardan biriyle bağlanmak zorunda olan Kakao öğreniyorum

, Xcode otomatik benim AppDelegate sınıfına düğmeye asılacaktır. Ben "Eylem" seçerseniz böyle bir yöntemi oluşturur:

- (IBAction)onButtonPress:(id)sender { 
} 

Amaç-C'nin yöntemleri şöyle çalışır:

- (returnType)methodName:(typeOfFirstArgument)firstArgumentName (typeOfSecondeArgument)secondArgumentName 

Neden gönderici yerine ilişkin türünü id kullanmak zorunda NSButton? Yöntemi bir düğmeyle bağladığımı biliyorum. Sonuç olarak, gönderenin NSButton türünde bir nesne olmasını beklerim.

Denedim ama işe yaramadı.

cevap

2

tip id olmak zorunda değildir. Bağlantıyı oluştururken açılan pencereyi veya kodda, parametrenin türünü ve adını kesinlikle değiştirebilirsiniz.

id

"herhangi bir objc nesnesi için işaretçi" anlamına gelen bir türüdür. Belirli bir sınıfa bir işaretçi gibi iyi çalışır:

- (IBAction)onButtonPress:(NSButton *)importantButton; 
+2

dile yeni insanlar için buraya anahtar detay id' jenerik ** işaretçi yerleştirirken **, yani kullanmak zorunda olduğu 'olmasıdır NSButton * 've ** değil **' NSButton' gibi bir şey. –

+0

Uh! Bunu bilmiyordum. İd’ı neden beklediğiniz farklı türde kullanacağınızı gösteren bir örnek verebilir misiniz? – user148013

+0

Bu yöntemi çağırmak için farklı nesneler beklerseniz ve @ user148013 içinde kendilerini geçmeniz gerekiyorsa, 'id' kullanırsınız. Ya da göndereni hiç umursamadıysan. –

0

Cevap: Eğer "Eylem" i seçin ve işleyicisi isim nerede açıldı küçük iletişim bakarsak O, bir kimliği olması ETMEZ Eğer cismin gerçek türü seçebilirsiniz göreceksiniz, Örneğinizde NSButton.

İlgili konular