首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSObjectProtocol PureMVC :不符合Swift

NSObjectProtocol PureMVC :不符合Swift
EN

Stack Overflow用户
提问于 2015-12-14 20:44:24
回答 2查看 5.5K关注 0票数 8

我想在我的一个代理类中管理所有位置代码。因为这个类是从头开始构建的,并且不是在继承NSObjectProtocolUIView或类似类上构建的,所以当我尝试添加NSObjectProtocol时,它会抛出错误“不符合协议CLLocationManagerDelegate”。

代码语言:javascript
复制
class GeoProxy : Proxy, CLLocationManagerDelegate
{
   var locationManager = CLLocationManager()

   override class var NAME: String { return "GeoProxy" }
}

你知道如何在不添加所有NSObjectProtocol函数的情况下让类保持一致吗?

EN

回答 2

Stack Overflow用户

发布于 2015-12-14 20:47:27

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

代码语言:javascript
复制
class Proxy: NSObject {
}

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

票数 12
EN

Stack Overflow用户

发布于 2016-03-27 23:25:43

最好将与CLLocationManagerDelegate相关的代码放在viewComponent (UIViewController)中并从那里处理事情,因为UIViewController已经从NSObject继承,所以不需要更改PureMVC的核心角色(在本例中是Notifier)。

另一个选项是创建一个独立的类来管理与位置相关的活动,例如,实例化一个中介LocationMediator,将class Location: NSObject, CLLocationManagerDelegate实例化为它的viewComponent,并通过ILocation协议将其自身设置为一个委托。

LocationMediator将通过ILocation委托侦听来自它的viewComponent的任何事件,然后它将发送一个通知,供其他感兴趣的参与者响应。

硬件相关的活动属于查看

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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34267396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档