首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从imp调用Objective-C方法

从imp调用Objective-C方法,需要使用Objective-C的运行时库(Runtime Library)。以下是一个简单的示例,展示了如何从imp调用Objective-C方法:

代码语言:objective-c
复制
#import<Foundation/Foundation.h>
#import <objc/runtime.h>

@interface MyClass : NSObject
- (void)myMethod;
@end

@implementation MyClass
- (void)myMethod {
    NSLog(@"myMethod called");
}
@end

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        MyClass *obj = [[MyClass alloc] init];
        Method method = class_getInstanceMethod([MyClass class], @selector(myMethod));
        IMP imp = method_getImplementation(method);
        void (*func)(id, SEL) = (void *)imp;
        func(obj, @selector(myMethod));
    }
    return 0;
}

在这个示例中,我们首先定义了一个名为MyClass的类,并实现了一个名为myMethod的方法。然后,我们使用class_getInstanceMethod函数获取了myMethod方法的Method结构体,接着使用method_getImplementation函数获取了myMethod方法的IMP结构体。最后,我们将IMP结构体转换为一个函数指针,并使用该函数指针调用myMethod方法。

需要注意的是,由于Objective-C的运行时库是苹果公司提供的,因此在使用上述代码时,需要使用苹果公司的编译器和运行时库。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券