簡體   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