我正在开发的应用程序在谷歌地图上绘制了很多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
答案 0 :(得分:2)
您的objectID
媒体资源存在内存管理问题。不要将assign
用于对象指针属性。使用strong
。
@property (strong, nonatomic) NSNumber *objectID;