Belirli bir yöntemin varyantik türde olup olmadığını - çalışma zamanında - bulmanın bir yolu var mı? method_getTypeEncoding()
gibi bir şey; Bu, bir metodun değişken sayıdaki argümanları kabul edip etmediğini söyleyemez. Yoksa belki de söyleyecek bir hile var mı?Bir Objective-C yönteminin çalışma zamanı sırasında değişken olup olmadığını belirleme
5
A
cevap
6
Robert'in yorumu doğru. Düşünün: Ben - (void)variadicMethodWithIDSentinel:(int)a, ...
olarak ilan edilecek variadic yöntemini değiştirirseniz
strings asdfasdfasdf
Boogity
methodWithOneIntArg:
variadicMethodWithIDSentinel:
[email protected]:8i16
[email protected]:[email protected]
Hello, World!
, strings
çıkışı olur: Ortaya çıkan ikili üzerinde strings
Running
@interface Boogity
@end
@implementation Boogity
- (void)methodWithOneIntArg:(int)a {;}
- (void)variadicMethodWithIDSentinel:(id)a, ... {;}
@end
üretir (ayrıca stok main()
yoktu)
Boogity
methodWithOneIntArg:
variadicMethodWithIDSentinel:
[email protected]:8i16
Hello, World!
Yani, hayır, söyleme yolu yok.
İlgili konular
- 1. Çalışma zamanı sırasında protokol yöntemi nasıl tanımlanır?
- 2. Çalışma zamanı sırasında yönünü kilitleme
- 3. NSString boş olup olmadığını belirleme
- 4. Çalışma zamanı sırasında Konum simülatörünü ayarla Şehir/GPX Çalışma Zamanı
- 5. tools.jar kullanılabilir durumda olup olmadığını kontrol edin ve çalışma zamanı sırasında dinamik olarak yükleyin
- 6. Bir sınıf başvurulan olup olmadığını belirleme C#
- 7. Çalışma zamanı derlemesi sırasında belirsiz Referans hatası
- 8. LINQ: çalışma zamanı sırasında alt listelere erişme
- 9. Çalışma zamanı sırasında Uygulama Ayarlarını Değiştirme
- 10. Bağlantı noktasının kullanımda olup olmadığını belirleme?
- 11. Django - model sınıfının soyut olup olmadığını belirleme
- 12. socket.io/node.js sunucunun kapalı olup olmadığını belirleme
- 13. Magento modülünün etkin olup olmadığını belirleme
- 14. Pencere window.showModalDialog tarafından açılmış olup olmadığını belirleme
- 15. JavaScript değerinin "tamsayı" olup olmadığını belirleme
- 16. YouTube videosunun geniş ekran olup olmadığını belirleme
- 17. Eylem çubuğu bölünmüş olup olmadığını belirleme
- 18. Sınırlarda Lat/Lng olup olmadığını belirleme
- 19. Nesnenin tam sayı olup olmadığını belirleme
- 20. Python'da karakter kümesinin var olup olmadığını belirleme
- 21. İki dizenin Javascript'te benzer olup olmadığını belirleme?
- 22. Dizi anahtar değerinin boş olup olmadığını belirleme
- 23. Açı 180 dereceden fazla olup olmadığını belirleme
- 24. Oynatıcının sunucu veya istemci olup olmadığını belirleme
- 25. Bir bayt [] 'ın bir pdf dosyası olup olmadığını belirleme
- 26. InnoDB eklentisinin MySQL içinde yüklü olup olmadığını belirleme
- 27. Mac OSX'te çalışma zamanı sırasında bir uygulamayı açın. Netbeans
- 28. Çalışma zamanı sırasında paylaşılan bir kütüphanede hata ayıklama/izleme?
- 29. PHP çalışma zamanı önbellek
- 30. Bir tablo görünümü hücresinin görünür olup olmadığını belirleme
Bu bilgiyi hangi bağlamda görmek istediğinizi biraz daha açıklayabilir misiniz? Çalışma zamanında bunu tam olarak nasıl bulacağımı tam olarak bilmiyorum ama aynı zamanda çok fazla çeşitlilikte yöntem oluşturmaya da gerek duymadım. Temel olarak ne alıyorum, belki de bilmeniz gerekmiyor ve daha büyük bir sorun var. Belki de her zaman yanılıyor olabilirim :) –
Doğrulama yönteminde method_getNumberOfArguments() 'yi çağırdığınızda ne olur? Hiç denemedim, ama belki de özel bir değer döndürüyor (-1 veya bir şey gibi)? Ayrıca bkz. Method_copyArgumentType() '. – user1118321
@ user1118321 'method_getNumberOfArguments', normal yöntemmiş gibi, az sayı döndürür. –