2012-12-18 3 views
-2

나는 나의 MyClass.m 파일에 상수라는 유무 : 없음-ARC와IOS ARC : 사용할 수 없습니다 #DEFINE 일정 직접

#define kUDUserHistory    @"kUDUserHistory"; 

내가 직접 사용할 수 있었지만 지금은 그것을 복사해야 두 번째 변수에 넣은 다음 사용하십시오. ARC에서 직접 사용하려고하면 '예상 표현식' 오류가 표시됩니다.
더-ARC

[[NSUserDefaults standardUserDefaults] setObject:data forKey:kUDUserHistory]; 

ARC

NSString *key = kUDUserHistory; 
[[NSUserDefaults standardUserDefaults] setObject:data forKey:key]; 

내 특정 질문이 없습니다 :

  • 가 Whay 내가 직접 일정 사용할 수 아니다 이 경우에는?
  • 특히 ARC에서 상수를 관리하는 가장 좋은 방법은 무엇입니까?
+3

아크 및 비 호와 아무런 관련이 없으므로 상수 선언에 세미콜론이 포함되어있어 문제가 발생할 수 있습니다. –

+2

Midhun MP가 정확합니다. 그런 식으로'kUDUserHistory'를 정의한다면 "no-ARC"코드를 컴파일 할 방법이 없습니다. –

답변

6
#define kUDUserHistory    @"kUDUserHistory"; 

은해야합니다 귀하의 답변에 대한

#define kUDUserHistory    @"kUDUserHistory" 

:

[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"kUDUserHistory";]; 

NSString에 먼저 전달 :

NSString *key = @"kUDUserHistory";; 

가 있다고 왜 작동하는지. 또한 .H 파일에

을 사용할 수 있습니다

+0

당신이 맞습니다, 세미콜론을 제거하면 문제가 해결되었습니다. 하지만 두 번째 변수에서 복사 할 때 왜 작동하는지 궁금합니다. –

+2

@MuhammadNabeelArif 그 이유는'var = @ "string";;'로 확장 되었기 때문입니다. 빈 문은 유효한 표현식 내에서 유효합니다. 하지만 iOS 앱을 작성하기 전에 C를 제대로 배울 수는 없습니까? –

0

통근자는 NSString *의 CONST kUDUserHistory; 하는 .m 파일

는 NSString *의 CONST kUDUserHistory = @ "kUDUserHistory"에서

;