我想在我的一个Proxy类中管理所有位置代码。由于该类是从头开始构建的,而不是构建在继承UIView
的{{1}}或类似类上,因此当我尝试添加{时,它会抛出错误'不符合协议NSObjectProtocol
{1}}。
NSObjectProtocol
任何想法,如何在不添加所有CLLocationManagerDelegate
函数的情况下使类符合要求?
答案 0 :(得分:8)
更简单的方法是让Proxy
类继承自NSObject
:
class Proxy: NSObject {
}
然后,所有子类都符合NSObjectProtocol
。此外,这些类将与Objective-C代码兼容。
答案 1 :(得分:2)
最好将CLLocationManagerDelegate
相关代码放在viewComponent
(UIViewController
)并处理其中的内容,UIViewController已经从NSObject
继承,所以&& #39;无需更改PureMVC的核心参与者(在这种情况下为Notifier
)。
另一个选项是创建一个独立的类来管理与位置相关的活动,例如实例化一个Mediator LocationMediator
实例化class Location: NSObject, CLLocationManagerDelegate
作为它的viewComponent并设置自己作为代理人通过ILocation
协议。
LocationMediator
会通过ILocation
委托侦听来自它的viewComponent的任何事件,然后它会发送其他感兴趣的演员可以回复的通知。
硬件相关活动属于View
任何与硬件相关的活动,例如摄像头,GPS,加速度计,陀螺仪和浏览器中的非硬件元素(如路由器)通常会生成事件并属于MVC范例的视图层,应在视图组件内处理。如果viewComponents中的任何触发事件需要与系统的其他部分进行通信,则它们将由其调解器处理。 Proxy
最适合Web服务或持久性。