如何在Objective C中实现动态添加方法?

我正在学习Objective C,想知道如何在其中实现动态添加方法。我需要在运行时动态地创建方法,并将其添加到类中。这种方法应该能够接受参数和返回值,并且我希望能够在运行时调用它们。我不确定如何开始这项操作,希望有人能够给我提供一些指导或示例代码。

提问时间:2023-07-18 22:21:48 编辑时间:2023-07-18 22:21:50 提问者: Arctic_Warrior
  • 狂沙漫舞
    3

    在Objective C中,可以使用Runtime机制实现动态添加方法。下面是一些示例代码,仅供参考:

    // 定义一个动态添加的方法

    • (void)myDynamicMethod:(NSString *)str { NSLog(@"调用了动态添加的方法,参数为:%@", str);

    }

    // 在运行时动态地添加方法 Class MyClass = objc_allocateClassPair([NSObject class], "MyClass", 0); class_addMethod(MyClass, @selector(myDynamicMethod:), (IMP)myDynamicMethodIMP, "v@:@"); objc_registerClassPair(MyClass);

    // 在运行时调用动态添加的方法 id instance = [[MyClass alloc] init]; [instance performSelector:@selector(myDynamicMethod:) withObject:@"Hello World!"];

    需要注意的是,动态添加的方法必须使用IMP函数指针指定实现,而且必须指定参数和返回值的类型编码。另外,为了确保方法名的唯一性,建议在方法名前加上前缀。

    回答时间:2023-07-18 22:21:53