【问题标题】:Should I declare the methods my class implements from a protocol?我应该声明我的类从协议中实现的方法吗?
【发布时间】:2014-04-21 16:00:05
【问题描述】:

假设我有一个符合协议的 Objective-C 类。在类中,我实现了协议中的一些方法。我应该在类扩展中声明这些方法还是应该避免它?

示例

// MyViewController.h

@interface MyViewController : UIViewController

<UITableViewDataSource>

@end

// MyViewController.m

@interface MyViewController ()

// Should I skip this?
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;

@end

@implementaion MyViewController

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // The implementaion goes here
}

@end

【问题讨论】:

    标签: objective-c class methods protocols declaration


    【解决方案1】:

    协议有必需的和可选的方法。当协议方法是可选的时,您应该在类扩展或类本身的接口部分中声明它。这会让编译器为你检查一致性。

    在实现所需的方法时,例如tableView:numberOfRowsInSection:,您可以采用任何一种方式,具体取决于您公司使用的编码标准。我更喜欢声明这些方法——无论是在类扩展中还是在接口本身中。这样我就不需要检查是否需要方法。

    【讨论】:

    • 就我个人而言,我觉得人们对可重用性的关注太少了,因为一个协议使可重用的胶水和一个子类使可重用的实现......有时一个或另一个是可取的......并且角色有随着时间的推移有点模糊(像acceptsFirstResponder这样的旧方法可以适合协议模型,如果今天实现了NSResponder,将是协议方法)......我的咆哮在哪里......哦
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-13
    相关资源
    最近更新 更多