将 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;
我正在开发的应用程序在 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;