Obj-C:尝试将间接指针存储为iVar时出错

时间:2012-03-05 13:10:51

标签: objective-c pointers

我被要求创建一个带有类似于此的签名的方法:

- (void)updateLocation:(CLLocation**)location atInterval:(NSTimeInterval)interval untilDate:(NSDate*)finishDate;

这个想法是用户传入我从班级更新的变量的地址。所以,我需要将location参数存储为iVar,只有当我尝试创建iVar时,才会收到错误:

  
    

指向非常量类型'CLLocation *'的指针,没有明确的所有权。

  

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

  1. 不要这样做。
  2. 问题在于自动引用计数:ARC需要知道指针对象的所有权语义。解决方案:创建参数和实例变量的类型CLLocation * __strong *
  3. 同样,不要!建议的架构打破了封装,应该被拒绝作为糟糕的设计。请改为使用委托或通知。