![](/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.