【问题标题】: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&lt;protocol&gt;*)variableName总是一个好习惯

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-20
        • 1970-01-01
        • 2015-12-18
        相关资源
        最近更新 更多