14

extensionプログラマーがクラスの実装でキーワードを使用する理由がわかりません。他のトピックでは、コードがより意味的に分離されていることなどを読むことができます。しかし、自分のコードで作業するときは、// MARK - Something. 次に、Xcode でメソッド リスト (ctrl+6) を使用すると、すべてが一目でわかります。

Apple のドキュメントでは、以下を読むことができます。

「拡張機能は、既存のクラス、構造、または列挙型に新しい機能を追加します。」</p>

では、自分のコードを自分のクラス内に直接記述してみませんか? NSURLSessionやなどの外部クラスの機能を拡張したい場合とは異なり、拡張機能を使用する必要Dictionaryあります。

Mattt Thompson は彼の Alamofire ライブラリで拡張機能を使用しています。

4

2 に答える 2

14

拡張機能を使用してロジックのさまざまな部分をさまざまな拡張機能に公開できるため、私にとっては完全に合理的です。これは、たとえば、プロトコルへのクラスの適合性をより読みやすくするためにも使用できます。

class ViewController: UIViewController {
...
}

extension ViewController: UITableViewDelegate {
...
}

extension ViewController: UITableViewDataSource {
...
}

extension ViewController: UITextFieldDelegate {
...
}

明確にするために、プロトコルメソッドはさまざまな拡張機能で区切られています。これは、言うよりもはるかに読みやすいようです。

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate {}

したがって、SDK から既存のクラスを拡張するだけでなく、独自のコードを読みやすくするために拡張機能を使用しても害はないと思います。拡張機能を使用すると、コントローラーに膨大な量のコードを含めることを回避し、機能を読みやすい部分に分割できるため、それらを使用することによるデメリットはありません。

于 2015-02-06T14:51:44.117 に答える