【问题标题】:Defining protocols without parameters定义无参数协议
【发布时间】:2013-05-23 07:07:17
【问题描述】:

我试图在不添加参数的情况下定义协议方法,但找不到正确的语法。

这里是定义(有语法错误)

- (void)cameraOverlayView:(CameraOverlayView *)cameraOverlay didTakePhoto;

我不想通过第二个参数传递任何值。我的目的只是表明委托实例发生了一些事情。

我应该如何写定义?

【问题讨论】:

    标签: objective-c objective-c-protocol


    【解决方案1】:

    您方法的第二部分格式不正确:

    - (void)cameraOverlayView:(CameraOverlayView *)cameraOverlay didTakePhoto;
    

    由于空间的原因,它需要一个参数。相反,将didTakePhoto 部分添加到方法名称中,例如:

    - (void)cameraOverlayViewDidTakePhoto:(CameraOverlayView *)cameraOverlay;
    

    【讨论】:

      【解决方案2】:
      - (void)cameraOverlayViewDidTakePhoto:(CameraOverlayView *)cameraOverlay;
      

      【讨论】:

      • 谢谢! :) 我想我会在很长一段时间内无法适应 Objective-C 语法。
      • 命名可能很困难。这甚至可能是 - (void)didCaptureImageWithCameraOverlayView:(CameraOverlayView*)aCameraOverlayView;
      • @uchuugaka 1. 不,这很简单,2. 不,它不能,查找 Cocoa 命名约定。
      • 天哪。对于刚接触它的人来说,这很难。每天见。是的,它可以。查看大量的委托方法。如果您是作者,则可以将其命名为任何合适的名称。 “拍照”对实际操作并不诚实。是环扫描仪是一样的。
      【解决方案3】:

      基本上在目标 c 中,您不能让方法名称部分在参数之后悬空...... 所以:

      非法:

      -(void)methodWith:(int)theInt forMyMom;
      

      正常:

      -(void)methodForMyMomWithInt:(int)theInt;
      

      合法但奇怪

      -(void)method:(int)theInt :(int)theOtherInt;
      

      使用选择器:@selector(method::)

      【讨论】:

        【解决方案4】:

        这是一个 Objective-C 约定的问题。您可以将其重写为:

        - (void)cameraOverlayView:(CameraOverlayView *)cameraOverlayViewDidTakePhoto;
        

        【讨论】:

          猜你喜欢
          • 2017-04-25
          • 1970-01-01
          • 1970-01-01
          • 2011-01-07
          • 2021-03-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-03-07
          相关资源
          最近更新 更多