![](/img/trans.png)
[英]Can't initializing a delegate in the AppDelegate but inside a class method it works
[英]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.