【问题标题】:Protocol on method declaration?方法声明协议?
【发布时间】:2012-12-02 07:14:49
【问题描述】:
我开始使用 Nimbus 框架,我只是第一次遇到这种语法。看起来他们在方法声明中使用某种协议,然后在声明变量时使用。我只在类名之后看到头文件中使用的协议,所以这对我来说是全新的。
- (UIView<NIPagingScrollViewPage>*)pagingScrollView:(NIPagingScrollView *)pagingScrollView pageViewForIndex:(NSInteger)pageIndex {
还有:
UIView<NIPagingScrollViewPage>* pageView = nil;
这到底是什么意思?他们为什么使用这种格式?
【问题讨论】:
标签:
objective-c
ios
nimbus-ios
【解决方案1】:
该声明确保返回的 UIView 符合 NIPagingScrollViewPage 协议。如果方法试图返回一个未声明为符合的对象,编译器将发出警告。
该语法的更常见用法是委托,因为您将允许任何符合协议的类成为委托,因此该语法用于确保该类符合协议。
-(void)setDelegate:(id<SampleDelegate>)del //Makes sure that del conforms to the protocol SampleDelegate, the compiler will emit a warning
【解决方案2】:
这只是声明它正在确认该协议的方式。否则会显示警告。然后你必须使用id。
所以使用(datatype<protocol>*)variableName总是一个好习惯