gpt4 book ai didi

objective-c - Objective C 和类中的魔术方法

转载 作者:太空狗 更新时间:2023-10-30 03:29:17 26 4
gpt4 key购买 nike

objective-c 是否提供了一种方法来拦截对不存在的类方法的调用?

最佳答案

forwardInvocation 方法就是您要使用的方法。当在对象上调用不存在的选择器时,它会自动调用。此方法的默认行为是调用 doesNotRecognizeSelector:(这是将调试信息输出到您的控制台),但您可以覆盖它以执行任何您想要的操作。 Apple 推荐的一种方法是让此方法将方法调用转发给另一个对象。

- (void)forwardInvocation:(NSInvocation *)anInvocation

请注意,forwardInvocation 是一个相当昂贵的操作。 NSInvocation 对象需要由框架创建并(可选)用于调用另一个实例上的选择器。如果您正在寻找一种(相对)更快的方法来检测不存在的选择器,那么您可以选择实现 forwardingTargetForSelector

- (id)forwardingTargetForSelector:(SEL)aSelector

你应该 Apple's documentation对于如何有效地覆盖这些方法,有一些问题需要注意,特别是在将缺少选择器的同一对象上覆盖 forwardInvocation 方法时。

关于objective-c - Objective C 和类中的魔术方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6939284/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com