繁体   English   中英

委托方法不能引用自己的类

[英]Delegate method can't reference its own class

我有一个名为NumberPickerView的UIView子类。 我正在为此编写委托方法。 编译器不允许我将NumberPickerView的实例作为该方法的参数传递。 我想念什么?

@protocol NumberPickerViewDelegate

-(void) numberPickerDidChangeSelection:(NumberPickerView *)numberPickerView;
//error: expected a type

@end


@interface NumberPickerView : UIView <UIScrollViewDelegate> {
     id <NumberPickerViewDelegate> delegate;
}

实际上可以。 那时编译器不知道NumberPickerView

@class NumberPickerView;

在协议声明上添加它,以使编译器知道该类...这称为forward declaration

为了更好地理解,请查看以下内容:

iPhone +在Xcode中编写@classname和#import“ classname.h”之间的区别

要么

将协议声明移到NumberPickerView类的定义下方,但在这种情况下,还应该在顶部添加:

@protocol NumberPickerViewDelegate;

不使用id<NumberPickerViewDelegate>delegate获得警告

您可以将参数类型更改为id,而不是NumberPickerView *,然后将任何类对象后缀传递为

@protocol NumberPickerViewDelegate

-(void) numberPickerDidChangeSelection:(id)numberPickerView;

@end


@interface NumberPickerView : UIView <UIScrollViewDelegate> {
     id <NumberPickerViewDelegate> delegate;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM