【发布时间】:2018-02-20 11:09:42
【问题描述】:
我正在开发的应用程序在谷歌地图上绘制了很多 GMSMarkers。它在除 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
应用程序在返回散列函数时崩溃,并出现 EXC_BAD_ACCESS 异常。当我为标记设置地图对象时,我启用了 Zombie 对象并尝试打印 po marker.objectID,但出现以下错误:
*** -[CFNumber respondsToSelector:]: message sent to deallocated instance 0x80416470
0x80416470
有什么帮助吗?! TIA
【问题讨论】:
-
使用 strong 而不是为 objectID 赋值
标签: ios objective-c memory-management google-maps-sdk-ios iphone-5