2012-12-02 99 views
1

我开始使用Nimbus框架,而且我第一次碰到了这个语法。看起来他们在方法声明中使用某种协议,然后在声明变量时使用。我只在类名后看到头文件中使用的协议,所以这对我来说是全新的。方法声明的协议?

- (UIView<NIPagingScrollViewPage>*)pagingScrollView:(NIPagingScrollView *)pagingScrollView pageViewForIndex:(NSInteger)pageIndex { 

另外:

UIView<NIPagingScrollViewPage>* pageView = nil; 

究竟是什么意思?他们为什么使用这种格式?

回答

1

该声明确保返回的UIView符合NIPagingScrollViewPage协议。如果该方法尝试返回未声明为符合的对象,编译器将发出警告。

该语法的更常见用法是委托,因为您可以允许符合协议的任何类作为委托,以便使用语法来确保类符合协议。

-(void)setDelegate:(id<SampleDelegate>)del //Makes sure that del conforms to the protocol SampleDelegate, the compiler will emit a warning 
0

这只是声明它确认该协议的方式。否则会显示警告。然后你必须使用ID。

因此,使用(datatype<protocol>*)variableName