我仍然不熟悉Objective-C(来自Java和C#背景),并且正在为我正在开发的iOS SDK实施插件系统。

我已经如下定义了我的插件头文件(Plugin.h)(Java反向路径将是一个抽象类,如果我在这里做错了什么,请改正我的名字)。

@protocol Plugin <NSObject>
@required
- (void)initialize;
- (NSString *) getPluginName;
- (NSString *) getVersion;
@end


然后,我的SDK中就有一个可用于注册插件的方法。该数组将是从TFTPlugin继承的对象的数组。

+ (void)registerPlugins:(NSMutableArray*) array
{
    for(Plugin *plugin in array)
    {
        [pluginClasses addObject:plugin];
    }
}


但是我在for循环中遇到了一个错误:使用未声明的标识符“插件”。

知道我在做什么错吗?

谢谢

最佳答案

尝试这个:

for(id plugin in array){
    if([[plugin class] conformsToProtocol:@protocol(Plugin)]) {
        [pluginClasses addObject:plugin];
    }
}


如果您知道所传递的所有内容实际上都在执行,则检查是否符合协议是可选的。

10-08 05:46
查看更多