在Objective C/iOS中相当于Ruby method_missing

use*_*291 10 iphone objective-c ios

据我所知,Objective C/iOS是非常动态的语言,它是否像Ruby一样动态?它是否具有method_missing的等价物?我问同样的问题js Javascript是否有像Ruby的method_missing功能?并且对js不支持它感到失望.

lou*_*uie 17

Objective-C是动态的,虽然我是Ruby程序员,但我认为它不像Ruby那么动态.

Objective-C确实具有method_missing的等价物.您将要覆盖两者forwardInvocation:methodSignatureForSelector:遵循Apple提出的这一重要建议:

要点:要响应对象本身无法识别的方法,除了forwardInvocation:之外,还必须覆盖methodSignatureForSelector :. 转发消息的机制使用从methodSignatureForSelector获取的信息来创建要转发的NSInvocation对象.您的重写方法必须为给定的选择器提供适当的方法签名,方法是预先制定一个或通过询问另一个对象.

doesNotRecognizeSelector:苹果警告不要使用it must always result in an exception being thrown.

有关更多详细信息,请参阅NSObject类文档:http://developer.apple.com/library/ios/#DOCUMENTATION/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html