我仍然不熟悉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];
}
}
如果您知道所传递的所有内容实际上都在执行,则检查是否符合协议是可选的。