如题,以前是个c#新手,在c#里也经常用委托,回来熟了lambda后都是直接写个lambda过去。当时没觉着二者区别多大。
但现在搞iOS有点晕了,怎么这里block和delegate是不同的东西?然后再看看委托的使用上怎么又觉着这不是和使用传统意义上的接口然后多态一个意思嘛?只是delegate有optional和request而已啊。
哎呦不对,我在写这个问题的时候突然感觉好像委托就是我所说的这个原理?求大神给解惑……
伊谢尔伦2017-04-25 09:05:21
objc のデリゲートは C# の概念と同じではありません。obj c のデリゲートは設計パターンの委任モードであり、一般にプロトコル (他の言語ではインターフェイス、objc ではプロトコルと呼ばれます) であり、オプションで必須です (I)推測します request (おそらくスペルミス) と言いましたが、これは、プロトコルを実装する際の特定のメソッドまたは変数が必須であるかオプションであるかを意味します。たとえば、テーブル ビュー自体は、表示したい行数や何を表示したいのかを知りません。テーブル ビューは、デリゲート (UITableViewDelegate/UITableViewDatasource に従うオブジェクトの別の弱参照) に問い合わせます。何行まで表示したいのですが?各列の高さはどれくらいですか?何か見せますか?クラスが UITableViewDelegate に従う場合、一部のメソッドは実装する必要があり (必須)、一部はオプション (オプション) です。 objc と C# では重いキーワードを使用しているだけで、意味が異なると考えてください。