【问题标题】:where to declare protocols for reuse in objective-c在objective-c中声明重用协议的位置
【发布时间】:2012-06-01 02:20:21
【问题描述】:

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

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

【问题讨论】:

    标签: iphone objective-c


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

          #import <Foundation/Foundation.h>
          @protocol ImagePickerCtrlDelegate;
          @interface UIImagePickerController (DissappearDelegate){
              id <ImagePickerCtrlDelegate> delegate;
      }
              @end
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-15
        相关资源
        最近更新 更多