如何理解iOS开发中的代理设计模式

发布网友 发布时间:2022-03-04 04:44

我来回答

1个回答

热心网友 时间:2022-03-04 06:13

  Delegate ,又称为 委托或代理, 它是一种设计模式。 学习iOS开发,需要深入理解 Delegate的用法。 Apple 对Delegate 有明确的说明。但理解起来还是有些抽象。  Delegate的用途:  用于改变或控制其他对象 。  Delegate 的定义:  (1)Delegate 是一个对象, 其类型为 id (anonymous type: 匿名类型);  (2) Delegate 的引用通常是一个实例变量 (instance variable), 命名为 delegate;  (3)Delegate 内所用的方法是 访问模式 (Accessors pattern)  Delegate Message 的命名:  发给Delegate的消息 通常带有(should, will, did) 之一。  should:期待delegate返回一个值;  will:表示变化发生之前 要做的事情;  did : 表示变化发生之后 要做的事情。  Cocoa Touh 的很多类都不同程度地用到Delgete。 比如: NSTextField, NSTableView。 其中 NSTableView 还用到了 Data Source。  其实,Data Source 也是一种委托。 Data Source 减少了 View 与 Model 之间的耦合性。 其中 , NSAppplication 实现了几十个委托方法。  Delegate 使用的注意事项:  Delegate 是一个 ID 类型的对象, 同样存在创建和释放问题。 对于Data Source , 只有Data Source的使用者 (比如Table View)释放后, Data Souce 才能被释放。 否则, 就会出现crash。 因为在table view 获取数据时, 数据已经不见了。  Delegate 可用在多个场景下,比如对象间的数据交互, 不同视图之间的行为交互。 若仅仅是数据交互, 可实现的方法还有很多。Delegate 尤其适用于视图之间的行为交互。
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com