【发布时间】:2023-02-11 02:40:05
【问题描述】:
我在 obj-c 中有一个框架,它包含在其他模块中。我想让将要包含它的模块为某些方法提供自己的实现。
由于序列化这些对象的一些问题,我不能使用子类化。所以,还得靠using类。
我正在考虑为对象声明一个方法/选择器,然后模块将定义类别并实现该方法。像下面这样的东西:
Framework will declare interface like below:
@interface framework:NSObject
- (void)methodToBeImplemented;
@end
@implementation framework()
- (void)invokeClientDefinedMethod
{
if([self respondsToSelector:@(methodToBeImplemented)]) {
[self methodToBeImplemented];
}
}
//Module-1 will link against this framework and define the category
@implementation framework(methodImplementor)
- (void)methodToBeImplemented
{
...
}
@end
我可以选择完全不在模块本身提供的框架和实现中实现methodToBeImplemented吗?
我知道我可以做到performSelector路线。但我不敢这样做,因为我想发送指向我的方法的指针,这对于 performSelector 来说是不可能的
【问题讨论】:
标签: ios objective-c objective-c-category