【问题标题】:Set a Pointer Address in Objective-C to nil将 Objective-C 中的指针地址设置为 nil
【发布时间】:2018-01-05 01:19:23
【问题描述】:

在我的方法中,每次移动地图标记时都会绘制折线。 根据 Google Maps iOS 文档,将折线设置为 nil 将删除折线。

当我在标记移动触发后这样做时,折线仍然存在。

根据此处的其他帖子,只有当您拥有要删除的行的指针地址时,才能删除 GMSPolyline,因为即使全局声明该 api 仍然每次都会创建另一个实例。

我不太了解指针或地址。如何获得指针地址,一旦获得,如何通过该地址引用对象?

我可以这样获取地址:

NSString *addressRight = [NSString stringWithFormat:@"%p",polylineRightPreview];

每次调用该方法时,即使变量是全局声明的,我每次都会为 GMSPolyline 获得不同的地址:

0x600000d36f80   0x620000d2dfc0    0x608001538560

我基本上需要这个:

GMSPolyline *polyline = nil;

但它必须引用最后创建的指针的确切地址。你是怎么设置的

0x600000d36f80 to nil?

如果你只是调用 polyline = nil 什么都不会发生,因为一旦它被添加到地图中,它就有自己的指针地址。此外,调用地图清除函数也没有什么用处,因为它不适合移除所有其他地图对象并重新绘制它们。

【问题讨论】:

    标签: ios google-maps pointers


    【解决方案1】:

    将折线对象添加到数组中,当您想要删除这些折线时,迭代数组并设置

    polyline.map = nil
    

    【讨论】:

    • 这行得通。您应该填写答案以包括数组本质上是指针地址的索引这一事实。然后我将奖励赏金。似乎是引用指针地址的唯一方法。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-01-20
    • 1970-01-01
    • 2012-10-15
    • 2017-10-06
    • 2018-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多