gpt4 book ai didi

ios - Objective-C 方法名称别名

转载 作者:可可西里 更新时间:2023-11-01 05:45:01 24 4
gpt4 key购买 nike

我有一个相当简单的问题,我似乎无法找到明确的答案。

有没有一种方法可以为方法创建别名:

- (void)method1
{ //Stuff }
- (void)method2
{ [self method1];}

我希望 [self method2]; 通过创建别名等同于 [self method1];。这在 Objective-C 中可能吗?

最佳答案

如果您正在寻找一种无需编写大量代码即可完成此操作的方法,那您就走运了。根据经验,Obj-C 没有太多“语法糖”,这就是其中一种情况。

大多数时候,您只会做您想避免的事情。这很简单而且有效。

但当这还不够好时,Obj-C 运行时有一个称为“消息转发”的功能。

基本上,如果您的对象收到一条它一无所知的消息(方法调用),默认行为是抛出异常。但是您的对象可以选择用它做其他事情,Obj-C 框架类在数百万处这样做。

大多数时候你将消息“转发”到另一个对象,但你可以做任何你想做的事:

- (void)forwardInvocation:(NSInvocation *)anInvocation
{
if (/* some check */) {
/* do something */
return;
}

// perform the superclass's implementation (which is probably to throw a "method not recognized" exception.
[super forwardInvocation:anInvocation];
}

可以在此处找到包含更多详细信息的官方文档:https://developer.apple.com/library/ios/DOCUMENTATION/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtForwarding.html

关于ios - Objective-C 方法名称别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18554565/

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