2010-05-16 23 views
5

Bu cevabı hiçbir yerde bulamıyorum. Bir yöntem üstbilgisinde gönderici parametresi olduğunda ne anlama gelir? Bunu çağıran örneği mi yoksa onu denen yöntemi mi temsil ediyor?Gönderen nedir?

cevap

3

Hiç bir sihir söz konusu değil. Muhtemelen, Arayüz Oluşturucu tarafından bazı kullanıcı arabirimi öğelerine bağlı yöntemler hakkında konuşuyorsunuz değil mi?

IBAction, boşluğa genişleyen bir makrodur. Bu, Arayüz Oluşturucu'da bulunmasını istediğiniz yöntemleri işaretleyen bir sözdizimsel şekerdir.

[button addTarget:yourObject action:@selector(userDidPressButton:) forEvent:...]; 

Ve düğmesine bastığınızda, bu eylem ve yangınların listesine geçer: bazı arayüz elemanı için bu yöntemi bağlamak Şimdi zaman, bir düğme, IB butonuna ... yöntem addTarget çağırır demek userDidPressButton, kendisini ilk bağımsız değişkeni olarak geçiriyor. Bu muhtemelen düğmeler için bu kadar kullanışlı değildir, ancak bir kaydırıcıdan değişiklik olayları almak için aynı mekanizmayı da kullanabilirsiniz ve bu durumda kaydırıcı değerini almak için gönderen argümanını kullanabilirsiniz.

+1

Cevabınız ikinci yarısı Cocoa Touch kapsar, ancak her denetim aynı anda yalnızca tek bir hedef ve eylemi vardır Kakao, için yanlış. Tek istisnalar, örnek başına yalnızca tek bir hedefi olan ancak örnek başına iki eylem seçicisine sahip olan NSTableView ve NSOutlineView'tir (tıklama için bir, çift tıklama için bir tane). –

+0

Evet, sadece Cocoa Touch ile çalışıyorum, açıklama için teşekkürler. – zoul

4

Yöntem üstbilgisinde gönderici parametresi olduğunda ne anlama gelir? Bunu çağıran örneği mi yoksa onu denen yöntemi mi temsil ediyor?

Bağımsız değişken türüne bakın. Şanslar, id. Bu bir nesne işaretçisinin türüdür. Mesajın gönderildiği örnek doğrudur.

Bir mesaja bir mesajı seçici geçebilir, ama bu tip SEL değil id olduğunu. Benzer şekilde, bir iletiye yöntem uygulaması geçirebilirsiniz, ancak bunun için id değil IMP türüdür. Tek bir sender bağımsız değişkenini kullanan yöntemler, genellikle IBAction dönüş türüyle tanımlanan genellikle eylem yöntemidir. Zoul'un dediği gibi, IBAction, derleyici için void'a genişler, bu da yöntemin bir değer döndürmediğini söyler. IBAction'a sahip olmamızın nedeni, Interface Builder'ın dönüş türü olarak IBAction ile yöntemleri aradığı ve bunları bir kontrolün bağlanabileceği eylemler olarak algıladığıdır.

Kakao (Mac OS X) hakkında daha fazla bilgi için, bkz. “The Target-Action Mechanism” in the Cocoa Fundamentals Guide ve Control and Cell Programming Topics for Cocoa.
Cocoa Touch (iPhone/iPod touch/iPad) hakkında daha fazla bilgi için, bkz. “The Target-Action Mechanism” in the UIControl class reference.

1

Tabii, bunu tanımlamak için bir çok teknik yol var, Ama 'hayır no' teorisinde geçtiği gönderici argümanı sadece onu geçen GUI nesnesidir.

Bu yöntemi belirli bir düğmeye bağlarsanız, Button1'i çağırırız, gönderen Button1 olur ve düğme için mevcut olan tüm bilgiler gelir. Boyut, metin vb.

Bunun yeterli olduğunu umuyorum.

Bryan

İlgili konular