2013-03-26 1 views
2

빌드를 실행하려고 할 때 'Initialiser 요소가 컴파일시 상수가 아닙니다.'오류가 발생합니다. 배열이 문제의 원인임을 보여줍니다.목표 C 초기화 자 요소가 컴파일 타임 상수가 아님

@implementation XYZViewController 
//Array setup 
NSArray *example = @[@"X", @"Y", @"Z"]; 

@end 

이 내 모든 코드는 아니지만 나는 현재의로 내 전체 코드가 여기에 표시해야하는 필요성을 찾을 수없는 다음과 같이 내 코드입니다.

+0

NSArray 예제 [] = @ [@ "X", @ "Y", @ "Z"]; –

+1

문제는 상수에 대한 포인터를 만들려고한다는 것입니다. 상수의 값으로 변수를 만들고 그 값을 가리켜 야합니다. –

답변

1

당신이 오류를 보여줍니다 왜이 블록의 배열을 선언하려고은 는

@implementation XYZViewController { 
    //Array setup 
    NSArray *example ; 
} 

@end 

이 배열의 viewDidLoad 방법의 값 또는 어떤 경우 elselike이 example = @[@"X", @"Y", @"Z"];을 지정, 같은 해보십시오.

+0

Sunny에 도움을 주셔서 감사합니다. 나는 Objective-C Noob입니다. – Lollipopassasin

2

요점은 @[@"X", @"Y", @"Z"];arrayWithObjects:count:NSArray에 대한 메서드 호출로 컴파일러에서 변환되므로 정적 초기화 프로그램이 아니라는 것입니다.

정적 초기화는 메소드 호출이 될 수 없으며 물론 컴파일러는 이에 대해 불평합니다.

배열을 초기화하려는 경우 런타임에 메소드 내부에서 배열을 초기화 할 수 있습니다. 그렇게하기위한 몇 가지 옵션이 있습니다.

모든 인스턴스에 대해 배열을 초기화하려면 기본 inizializer (특정 클래스에 따라 다름)에서 배열을 초기화하십시오.

클래스 수준에서 수행하려는 경우 initialize 클래스 메서드에서 수행 할 수 있습니다.

관련 문제