[英]Calling a method defined in a protocol on a class included with forward declaration
[英]Protocol on method declaration?
我開始使用Nimbus框架,並且第一次遇到這種語法。 看起來他們在方法聲明中然后在聲明變量時使用某種協議。 我僅在類名之后看到頭文件中使用的協議,因此這對我來說是全新的。
- (UIView<NIPagingScrollViewPage>*)pagingScrollView:(NIPagingScrollView *)pagingScrollView pageViewForIndex:(NSInteger)pageIndex {
也:
UIView<NIPagingScrollViewPage>* pageView = nil;
這到底是什么意思? 他們為什么使用這種格式?
該聲明確保返回的UIView符合NIPagingScrollViewPage協議。 如果方法嘗試返回未聲明符合的對象,則編譯器將發出警告。
該語法的更常見用法是委托,因為您將允許所有符合協議的類都作為委托,因此可以使用語法來確保該類符合協議。
-(void)setDelegate:(id<SampleDelegate>)del //Makes sure that del conforms to the protocol SampleDelegate, the compiler will emit a warning
這只是聲明它正在對該協議進行確認的方式。 否則將顯示警告。 然后,您必須使用id。
因此,使用(datatype<protocol>*)variableName
始終是一個好習慣
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.