Adakah cara agar saya dapat menguji apakah ada metode di Objective-C?
Saya mencoba menambahkan penjaga untuk melihat apakah objek saya memiliki metode sebelum memanggilnya.
objective-c
teepusink
sumber
sumber
- forwardInvocation:
).Jawaban:
sumber
Ada juga instance pesan statisRespondToSelector: (SEL) selector Anda akan menyebutnya seperti ini:
atau seperti ini:
Ini mungkin berguna jika Anda ingin memanggil satu konstruktor atau yang lain tergantung pada ini (maksud saya, sebelum memiliki instance itu sendiri).
sumber
Gunakan
respondsToSelector:
. Dari dokumentasi :sumber
Anda sedang mencari respondsToSelector: -
Seperti yang dikatakan Donal, hal di atas memberi tahu Anda bahwa foo pasti dapat menangani penerimaan pemilih bar. Namun, jika foo adalah proxy yang meneruskan bilah ke beberapa objek yang mendasari yang akan menerima pesan bilah, maka respondsToSelector: akan memberi tahu Anda TIDAK, meskipun pesan tersebut akan diteruskan ke objek yang merespons bilah.
sumber
Memeriksa pemilih dengan respondsToSelector biasanya hanya untuk metode delegasi. Anda tidak boleh menggunakan forwardInvocation atau proxy untuk metode delegasi. Jika Anda perlu menggunakan respondsToSelector dalam situasi lain, Anda mungkin ingin memastikan bahwa tidak ada cara yang lebih tepat untuk mendesain program Anda.
sumber