Objective-C代表的单独类

时间:2013-10-24 13:15:55

标签: ios delegates

我有单独的类“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课程的对象,或者有任何其他方式,请向我建议。并且还有其他任何方法可以实现相同的功能,并对其进行评论。

1 个答案:

答案 0 :(得分:0)

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

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