如何在ios 5中使用代理

时间:2012-07-16 11:03:29

标签: ios5 delegates

我需要在iOS应用程序中使用委托对象。我已将代表声明为:

在定义函数的类中:

@interface OOObjectCommandInterface : NSObject<OOCameraControllerDelegate>

在必须声明函数的类中: (在de .h文件中)

@protocol OOCameraControllerDelegate

- (void)drawFrame:(CVImageBufferRef) imageBuffer:(BOOL)flip;

@end

@interface OOCameraController : UIViewController
{
    ...    
    id<OOCameraControllerDelegate> delegate;
}

@property (nonatomic, readwrite) id<OOCameraControllerDelegate> delegate;

另外,初始化第二个类的地方:

_hardwareController.delegate = [OOObjectCommandInterface ocInterface];

其中_hardwareControllerOOCameraController类的实例。 所以,当我尝试调用委托对象时,我这样做:

[delegate drawFrame:imageBuffer:flip];

但该功能未执行。有什么想法吗?

P.D。:我调用的函数是一个单例类。可能有任何问题吗?

2 个答案:

答案 0 :(得分:4)

你是否在第二堂课中设置了委托给自己?在第二个类中创建一个对象,如

@property (nonatomic, readwrite) id<OOCameraControllerDelegate> delegate;

然后[_hardwareController setDelegate:self];

答案 1 :(得分:3)

根据定义,单身人士是访问一个唯一的对象的设计顾客,只能创建一次(首先是get_instance)。使用get_instance,您可以从任何地方访问单例内的函数,因此,为什么您不直接使用它?

写一些像[[MySingletonClass get_instance] FunctionThatIWantToUse:...];并且不要使用代理