所以我正在研究obj-c中的某些東西(我不想說什麼),我需要能夠使用任意變量在任意對象上調用任意方法。前兩個很容易做到,但我不確定如何執行可變參數。要清楚,這是而不是關於接收可變參數的函數/方法,但關於發送它們。我找到了兩種方法來實現這一點:objc_msgSendv(及其變體)在Objective-c運行時和NSInvocation中。 NSInvocation看起來更簡單,更像是'最佳實踐',但objc_msgSendv聽起來應該更快,而且我需要多次完成此操作,並且每次都完全不同的消息。我應該選擇哪一個? objc_msgSendv禁忌有一個很好的理由? (文檔說不要調用objc_msgsend函數。)有什麼更好的做法:objc_msgSendv或NSInvocation?
P.S.我知道所有參數的類型,並不是所有的參數都是id-s
另外,(不是主要問題的一部分),看起來並沒有從objc_msgSendv消息超級的方法,但是似乎並沒有在NSInvocation中做到這一點,所以對此的任何幫助都會很棒。
謝謝,我不知道obj_msgSendv被折舊。我所做的只是稍微設計一些,但基本上我有點無聊,因爲我無法在iPad上編寫代碼。所以我在看的是爲obj-c的一個子集編寫解釋器的一些方法,所以即使我沒有在應用商店發佈,我在技術上也沒有違反蘋果的任何限制。我只是甚至考慮到這一點,因爲objective-c運行時是如此動態的(例如,我只能通過字符串等來調用可可/ uikit)。哦,我從來沒有註冊SDK,所以我不能在NDA下;) – 2010-03-21 03:45:43
啊......好的。然後,ffi在iPhone平臺上不可用。 iPad在NDA之下;在這裏不能討論。 聽起來像一個有趣的項目。祝你好運。順便說一句,你可能想看看F-Script Anywhere。 – bbum 2010-03-21 04:02:42