gpt4 book ai didi

objective-c - 是否可以在类外声明 Objective-C 方法?

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

我知道您可以在类外声明 C 函数,但是否可以在类外声明 Objective-C 方法?

例子:

// Works
void printHelloC()
{
NSLog(@"Hello.");
}

// Error
-(void) printHelloOC
{
NSLog(@"Hello.");
}

int main (int argc, const char * argv[])
{
@autoreleasepool {
printHelloC();
[self printHelloOC];// 'self' obviously would not work but you get the idea
}
return 0;
}

最佳答案

这取决于。您可以通过在运行时添加方法来做类似的事情:

#import <objc/runtime.h>

void myCustomMethod(id self, SEL _cmd, id arg1, id arg2)
{
NSLog(@"This is a test, arg1: %@, arg2: %@", arg1, arg2);
}

int main(int argc, char *argv[])
{
Class NSObjClass = [NSObject class];

class_addMethod(NSObjClass, @selector(myNewMethod::), (IMP) myCustomMethod, "v@:@@");

NSObject myObject = [NSObject new];

[myObject myNewMethod:@"Hi" :@"There"];

[myObject release];

return 0;
}

但那是在 @class 构造之外,它实际上只是掩盖了类别发生的事情。

关于objective-c - 是否可以在类外声明 Objective-C 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9105987/

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