Ken*_*Ken 3 objective-c core-location ios
抱歉,这个问题可能听起来“主观”,但我认为它应该有一个相当明确的答案。我有一个类“LocationManager”,我想管理我的核心位置逻辑。我有两个选择:
LocationManager 有一个引用 CLLocationManager 实例的强大属性。LocationManager 是 CLLocationManager 的委托,并从中接收位置更新。
LocationManager 是 CLLocationManager 的子类,它表示 self.delegate = self ,以便它可以接收自己的位置更新。
我很好奇这些选项中哪一个被认为是“正确”的事情,我确信一定有一种首选方法。谢谢!
CLLocationManager不应进行子类化并将其委托设置为 self,因为这违反了CLLocationManager. 由于该类当前已定义,因此它具有一个delegate属性。该属性充当契约,声明您可以将此属性设置为某个其他对象,并且该对象将接收委托通知。如果您进行子类化CLLocationManager(让我们称之为MyLocationManager),并且对象的委托属性指向其自身,那么您很可能会创建一种情况,即MyLocationManager只有在用户不将该属性用于自己的目的时才按承诺工作delegate。从用户的角度来看,MyLocationManager是一个CLLocationManager没有可用的delegate属性。顺便说一句,这违反了里氏替换原则。这里要问的问题是:MyLocationManager如果某个ViewController类决定使用它并使其delegate属性指向自身(ViewController),那么它仍然有效吗?
此外,如果你说,它不再是“委托” self.delegate = self。所以我想说最好使用变体 1。
谢谢你的提问。
| 归档时间: |
|
| 查看次数: |
432 次 |
| 最近记录: |