2012-01-16 5 views
12

olarak bir sınıf yöntemi kullanabilir. Şimdi delege olmak için yöntemi UIAlertViewDelegate protokolünde uygulamak zorundayım.Ben şu beyan bir sınıf yöntemi yönteminde bir temsilci geri arama

Kullanıcı, AlertView'imle etkileşime girdiğinde çağrılabilmek için yöntem bir sınıf yöntemi mi, yoksa, artık önemli mi?

Bu soruyu soruyorum, çünkü sınıfımın örnek değişkenleri yok, bu yüzden yalnızca sınıf yöntemleri içermeyi tercih ederim.

+1

Sınıf yöntemi mi demek istiyorsunuz? : P –

+0

Örnek yerine başvuran sınıf ismini kendi yerine deneyebilirsiniz. –

+0

Ayrıca bkz. Http://stackoverflow.com/questions/1781046/dynamically-invoke-a-class-method-in-objective-c. Sanırım bu sanırım. Bir sınıf yönteminde –

cevap

11

İlk olarak, "statik" yöntemlerle varsayalım, sınıf yöntemlerini (yerine - ile bildirilmiştir) kastediyorum.

Objective-C hakkında "derleyici şikayet etmiyor" her zaman size fazla bir şey söylemiyor. Tüm gerçekten demek, derleyiciyi her zaman (ya da en azından olabilir) çalışma zamanında çalışması gerektiğine ikna ettiniz demektir.

Sonuçta, temsilci olarak sağladığınız nesne doğru iletilere yanıt verirse, derleyici bunun bir sınıf olduğunu umursamaz (ve çalışma zamanı da olmaz). Bu durumda, bir sınıf yönteminden self sağlıyorsunuz. [MyClass class] yazdınız.

Sanırım bu, 'un yapması gerekip gerekmediğini sorgulayacaktır, ancak muhtemelen sorunuzun sınırları dışındadır.

14

buluşlarımla bazılarını paylaşmak istiyorum: ben yöntem bildirmek nasıl fark etmez, ben Ancak bu delegate:self veya delegate:[MyClass class]

  • gibi temsilci olarak deklare etmeleri önemli değildir

    1. :

      Bu işleri

      Aşağıdaki "sözdizimi" beyan UIAlertViewDelegate protokolünde olmasına rağmen

      , bu çalışmaz:

      -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ 
          // Some Actions here 
      } 
      
  • +1

    Evet, 'self' ve' [MyClass sınıf] 'bir" MyClass "yöntemine eşdeğerdir. Sınıfınızın kendisini temsilci olmasını istiyorsanız, bunu bir sınıf yöntemi olarak bildirmeniz gerekir. Dokümantasyon, oldukça evrensel olarak "nasıl yapıldığı" nı düşündüğüm örnek yönteminin nasıl uygulanacağını açıklıyor. Sonunda önemli olan şey, temsilci olarak sağladığınız nesne "alertView: clickedButtonAtIndex:" seçicisine yanıt vermesidir. Evet, cevap hala senin * yapabildiğin. Farklı olmanız gerekip gerekmediğini. – huskerchad

    +0

    Vay! Bir milyon yıl içinde, temsilci yöntemini sınıf yöntemine dönüştürmenin yolunun gitmesi olacağını tahmin edemezdim. Teşekkür ederim teşekkür ederim! Benzer bir sorunu çözmeye çalışan 5 + saatimi kaybettim. ... NSCondition veya performSelector ya da başka bir şeye ihtiyaç duymadı! – JohnQ

    +0

    çok teşekkür ederim !!!!!!!!!!! – ElizaS

    1

    Evet yapabilirsiniz !!! Bir sınıf da bir nesnedir.

    İlgili konular