Güncelleme yapmak düzenleyiniz:
Bir sınıf nesnesi, muhtemelen farkında olduğunuz gibi respondsToSelector:
'a sorun.
NSLog(@"Responds to selector? %i", [MyObject respondsToSelector:@selector(respondsToSelector:)]);
NSLog(@"Responds to selector? %i", [[MyObject class] respondsToSelector:@selector(respondsToSelector:)]);
Ancak, değişkeni bir protokol ilan ettik, bu yüzden sen tutuyorsun sınıf nesnesi olanlar uygular etmek olduğunu varsayar: Bir test uygulamasında, herhangi bir derleyici uyarı gösterilmeden aşağıdakilerden hem yapabilirsiniz yöntemleri. En basit çözüm, respondsToSelector:
numaralı telefonu aramak için 'u id
olarak yayınlamaktır. Biraz daha temiz bir çözüm +respondsToSelector:(SEL)selector
beyan kendi @protocol
beyan ve aşağıdaki gibi daha sonra someClass
ilan etmek olacaktır:
Class<SomeProtocol, ClassRespondingToSelector> someClass = ...
Son olarak,
http://bugreporter.apple.com de bir hata ile Apple Dosya emin olun. Ne yaptığınızı çok net bir şekilde görebilmek için basit bir test uygulaması ekleyin. Düzeltmeleri önceliklendirmelerine yardımcı olarak geçmişte gönderildiyse bile bu tür hata raporlarını memnuniyetle karşılıyorlar.
Son Not: Bu muhtemelen çünkü teoride oluyor, sen NSObject tamamen ayrı bir kök nesnesi uygulamak seçtiğiniz olabilir ve bu durumda, bu olmaz cevap -respondsToSelector:
için. -[NSObject respondsToSelector:]
aslında sınıf tanımı değil, NSObject
protokolünde bildirilmiştir. NSObject
protokolü aslında aslında NSObject
olarak bildiklerinizin çoğunu yaşıyor. Biri +respondsToSelector:
'un da orada olması gerektiğini iddia edebilir, ancak şu an itibariyle değil. Ve bir protokol listesi sağladığınızdan ve yöntem burada olmadığından, ne yaptığınızı bildiğinizden emin olmak için size bir uyarı verir.
Bu durumda, aslında Class'a değil id'ye atılmak istediğine inanıyorum. –
Bu, kaldırılmış işlevselliktir veya yanıt belirsizdir. 'Class', yanıtlaToSelector:' yanıt vermiyor. – RileyE
Deneyin. Üstbilgisinde değil, ancak classObject = [SomeClass sınıfı]; [classObject ,ToSelector'a cevap veriyor:] ' –