Swift PureMVC:不符合NSObjectProtocol

时间:2015-12-14 12:44:24

标签: ios iphone swift puremvc

我想在我的一个Proxy类中管理所有位置代码。由于该类是从头开始构建的,而不是构建在继承UIView的{​​{1}}或类似类上,因此当我尝试添加{时,它会抛出错误'不符合协议NSObjectProtocol {1}}。

NSObjectProtocol

任何想法,如何在不添加所有CLLocationManagerDelegate函数的情况下使类符合要求?

2 个答案:

答案 0 :(得分:8)

更简单的方法是让Proxy类继承自NSObject

class Proxy: NSObject {
}

然后,所有子类都符合NSObjectProtocol。此外,这些类将与Objective-C代码兼容。

答案 1 :(得分:2)

最好将CLLocationManagerDelegate相关代码放在viewComponentUIViewController)并处理其中的内容,UIViewController已经从NSObject继承,所以&& #39;无需更改PureMVC的核心参与者(在这种情况下为Notifier)。

另一个选项是创建一个独立的类来管理与位置相关的活动,例如实例化一个Mediator LocationMediator实例化class Location: NSObject, CLLocationManagerDelegate作为它的viewComponent并设置自己作为代理人通过ILocation协议。

LocationMediator会通过ILocation委托侦听来自它的viewComponent的任何事件,然后它会发送其他感兴趣的演员可以回复的通知。

硬件相关活动属于View

任何与硬件相关的活动,例如摄像头,GPS,加速度计,陀螺仪和浏览器中的非硬件元素(如路由器)通常会生成事件并属于MVC范例的视图层,应在视图组件内处理。如果viewComponents中的任何触发事件需要与系统的其他部分进行通信,则它们将由其调解器处理。 Proxy最适合Web服务或持久性。