0

我有单独的类“CoordinationController.h”它包含一些协议

例子:

@protocol CoordinationControllerDelegate <NSObject>

- (void)startScrollingUpToXPosition:(NSInteger)xPosition scrollingUpToYPosition:(NSInteger)yPosition;

@end

但我没有实现任何“CoordinationController.m”文件。但是这个协议在所有 viewController 类中实现,除了我的“ControllerManager.m”类。

我有一个“ControllerManager.h”类。这里我有 NSArray 中的控制器对象列表。

控制器管理器.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任何其他方式请建议我。还有其他方法可以实现相同的功能,请评论它。

4

1 回答 1

0

您无需CoordinationController实例化。您只有一个包含一些协议的文件。您最好的选择可能只是使用协议来定义编译器应该检查实现的方法。当您创建/设置时viewController1viewController2他们应该指定正在实施的协议。当您开始使用实例时,您应该使用它respondsToSelector:来检查所需的方法是否实际可用。

您也可以/改为使用conformsToProtocol:,但如果您要进行检查,它也可能是针对实际方法,而不是协议本身。

于 2013-10-24T13:26:53.033 回答