0

Google지도에서 많은 GMSMarkers를 사용하고있는 앱입니다. iPhone 5를 제외한 다른 모든 장치에서 완벽하게 작동합니다. GMSMarker를 하위 클래스로 만들고 하위 클래스에 개체 ID를 설정했습니다. 이것은 마커를 NSSet에 추가하고 플롯되고 중복되지 않는 뚜렷한 마커 만 있는지 확인하기 위해 수행됩니다. 서브 클래스는 다음과 같습니다GMSMarker를지도에 추가 할 때 iPhone 5에서만 앱이 다운됩니다. EXC_BAD_ACCESS

@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 예외와 해시 함수의 반환에 충돌한다. 나는 좀비 오브젝트를 활성화하고 내가 마커에 대한지도 객체를 설정있을 때 포 marker.objectID를 인쇄하려고 나는 다음과 같은 오류 얻을 :

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

어떤 도움을?! TIA

+0

objectID를 지정하는 대신 강하게 사용하십시오. –

답변

2

objectID 속성에 메모리 관리 문제가 있습니다. 개체 포인터 속성에 assign을 사용하지 마십시오. strong을 사용하십시오.

@property (strong, nonatomic) NSNumber *objectID; 
+0

어떻게 그랬습니까? 감사. 왜 이것이 iPhone 5에서만 처리되지 않는가? 다른 어떤 장치도이 실수로 나를 이끌지 못했습니다. –

+1

다른 장치에서 작동하는 것은 실제로 운이 좋았습니다. – rmaddy