6

如果我想重用一个协议来通知主视图控制器何时关闭详细视图控制器,例如: UIView notification when modal UIImagePickerController isdismissed?

我在哪里声明这个协议?将协议保存在单独的文件中是最佳实践吗?谢谢。

4

2 回答 2

3

通常,我(复制 Apple 的方法)在将与该协议的委托进行交互的类的标头上声明协议。(例如,UIActionSheet 头文件包含 UIActionSheetDelegate 的协议声明。)只要您没有声明的循环引用,在技术上声明协议的位置并不重要#import。这通常不会发生,因为与协议交互的类这样做是为了避免需要#import现在将实现协议的所有其他类。(UIActionSheet 在通过协议解除时向您的类发送消息,因此不需要 #import 您的任何类。)

如果您有一个协议,并且几个不相关的类将与该协议的委托进行交互,那么将协议放在自己的文件中将是一个很好的指标,因为该协议并没有真正与一个特定的类相关联。

于 2012-06-01T02:34:24.097 回答
1

我认为您应该在单独的文件中声明 UIImagePickerController 的类别。像 ImagePickerCtrlCatagory.h 和 ImagePickerCtrlCatagory.m 在 ImagePickerCtrlCatagory.h 中,这样做

    #import <Foundation/Foundation.h>
    @protocol ImagePickerCtrlDelegate;
    @interface UIImagePickerController (DissappearDelegate){
        id <ImagePickerCtrlDelegate> delegate;
}
        @end
于 2012-06-01T02:46:46.127 回答