我有单独的类“CoordinationController.h”它包含一些协议
示例:
@protocol CoordinationControllerDelegate <NSObject>
- (void)startScrollingUpToXPosition:(NSInteger)xPosition scrollingUpToYPosition:(NSInteger)yPosition;
@end
但我没有实现任何“CoordinationController.m”文件。但是这个协议在所有viewController类中实现,除了我的“ControllerManager.m”类。
我有一个“ControllerManager.h”类。这里我有NSArray中的控制器对象列表。
ControllerManager.h
@interface THSControllerManager : NSObject
{
NSArray *_controllers;
}
@end
ControllerManager.m
@interface ControllerManager ()
@property (nonatomic, retain) NSArray *controllers;
@end
@implementation ControllerManager
@synthesize controller = _controllers;
- (id)init
{
self = [super init];
if(self)
{
self.controllers = [NSArray arrayWithObjects:viewController1, viewController2, nil];
}
}
@end
现在我必须调用所有已实现的控制器的协议。我怎么能实现。
要么我必须在CoordinationController
课程中创建ControllerManager
课程的对象,或者有任何其他方式,请向我建议。并且还有其他任何方法可以实现相同的功能,并对其进行评论。
答案 0 :(得分:0)
您没有CoordinationController
来实例化。你只有一个包含一些协议的文件。您最好的选择可能只是使用协议来定义编译器应该检查的方法。当您创建/设置viewController1
和viewController2
时,他们应该将协议指定为已实施。当您使用实例时,应使用respondsToSelector:
检查所需方法是否实际可用。
您也可以/改为使用conformsToProtocol:
,但如果您要进行检查,则可能是实际方法,而不是协议本身。