将 GMSMarker 添加到地图时,应用仅在 iPhone 5 时崩溃:EXC_BAD_ACCESS

App crashes on only iPhone 5 when adding GMSMarker to the map: EXC_BAD_ACCESS

我正在开发的应用程序在 google 地图上绘制了大量 GMS 标记。它在所有其他设备上工作得很好,除了 iPhone 5. 我已经对 GMSMarker 进行了子类化,并为该子类设置了一个对象 ID。这样做是为了让我可以将标记添加到 NSSet 中,并确保只绘制了不同的标记,没有重复的标记。子类是:

@implementation BYOMarker
-(BOOL)isEqual:(id)object
{
    BYOMarker *otherMarker = (BYOMarker *)object;
    if (self.objectID.intValue == otherMarker.objectID.intValue) {
        return YES;
    }
    return NO;
}
-(NSUInteger)hash
{
    return  [self.objectID hash];
}
@end

.h 文件

#import <GoogleMaps/GoogleMaps.h>

@interface BYOMarker : GMSMarker
@property (assign, nonatomic) NSNumber  *objectID;
@end

应用程序在哈希函数的 return 处崩溃,出现 EXC_BAD_ACCESS 异常。当我为标记设置地图对象时,我启用了 Zombie 对象并尝试打印 po marker.objectID,但出现以下错误:

*** -[CFNumber respondsToSelector:]: message sent to deallocated instance 0x80416470
0x80416470

有什么帮助吗?! TIA

您的 objectID 属性 存在内存管理问题。不要将 assign 用于对象指针属性。使用 strong.

@property (strong, nonatomic) NSNumber *objectID;