2

클래스 초기화 프로그램을 사용하여 나중에 코드에서 사용하는 일부 정적 변수를 초기화합니다. ARC의 클래스 메서드 내에서 초기화 된 정적 객체

__strong static NSCharacterSet* _unwantedChars; 

@implementation TMGeocoderModel 

+(void)initialize{ 
    NSMutableCharacterSet *_alnum = [NSMutableCharacterSet characterSetWithCharactersInString:@","]; 
    [_alnum formUnionWithCharacterSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
    _unwantedChars = _alnum; 
} 

-(id)initWithSearchString:(NSString *)searchString{ 
    self = [super init]; 
    if(self){ 
     NSString* temp = [searchString stringByTrimmingCharactersInSet:_unwantedChars]; 

    } 
    return self; 
} 

내가 코드

NSString* temp = [searchString stringByTrimmingCharactersInSet:_unwantedChars]; 

_unwantedChars의 다음 줄에 도달

이미 해제됩니다. 모든 I 모드 아크로 전환하기 전에 작업을했지만, 다음과 같은 메시지가 ARC에 실패 이 - [CFCharacterSet characterIsMember이 :] : 메시지 할당이 해제 된 경우 0x11247330

로 전송 클래스 메소드에서 객체를 초기화하는 방법은 없나요 그래서 그들은 공개되지 않을 것인가?

업데이트 : 글쎄 그것은 완전히 실수 였고 해결책은 상당히 간단했습니다. 빌드 설정에서

- 다른 구성이 NO로 설정 동안 계산>목표 - C 자동 참조는 만 DEBUG 구성은 YES로 설정했다.

모두 YES로 변경되었으며 모든 것이 작동합니다.

답변

0

NSMutableCharacterSet *_alnum의 범위는 사용자의 의사 표현 방식에만 있습니다. 그것을 세계적으로 선언하십시오.

+2

감사합니다. @Vignesh. 나는 성공하지 않고 그것을 시도했다. 도움이되는 유일한 것은 '_unwantedChars = [_alnum copy];'입니다. . 그러나 궁극적 인 해결책이 아닌 것은 확실합니다. –

+0

안녕하세요. 모두 같은 문제가 있습니다. 마침내이 문제를 해결할 수있는 유일한 방법은 ARC를 사용 설정하고 그에 따라 코드를 변환하는 것입니다. –

관련 문제