【发布时间】:2013-09-04 15:07:31
【问题描述】:
我是 iOs 开发的新手,我有点困惑我应该如何分离我的代码以避免巨大的 ViewController.m 文件。目前我的主视图控制器有很多委托:
@interface ViewController : UIViewController <MKMapViewDelegate, HttpClientDelegate, CLLocationManagerDelegate, NSFetchedResultsControllerDelegate>
我想减少 viewController 代码,我想我应该创建单独的类来处理委托任务。问题是,如果我为 CLLocationManager 创建单例类并让它实现委托方法,那么我如何与视图控制器通信?
假设我的 CLLocationManager 收到位置更新,我如何告诉 viewController 对 UI 进行更改?我应该使用 NSNotificationCenter 发布通知,然后将观察者添加到视图控制器吗?还是让 viewController 像现在一样实现所有委托方法的最佳方式是什么?
【问题讨论】:
-
我相信你的想法是错误的。你的视图控制器可能太复杂了,因为你有太多的视图逻辑。将特定视图的逻辑提取到新的 UIView 类中。你正在实现的唯一一个不属于 ViewController 的委托是 HttpClientDelegate
-
@bengoesboom 我不同意。 iOS 世界中的“MVC”或 Massive View Controller 是一个大问题。分离出各种与委托相关的代码是一件好事。对于 OP,您可以使用自己的自定义委托协议,或阻止回调,或通知将消息发送回视图控制器。
-
总有分类...
标签: iphone ios objective-c uiviewcontroller delegates