2
하나의 viewcontroller에서 다른 변수로 값을 접근하기 위해 전역 변수를 사용하고 있습니다. viewdidload에서 전역 변수를 호출하는 문제는 null을 반환하지만, (ibaction) 그것은 정상적으로 작동합니다.코코아 xcode 4.3 전역 변수
하나의 viewcontroller에서 다른 변수로 값을 접근하기 위해 전역 변수를 사용하고 있습니다. viewdidload에서 전역 변수를 호출하는 문제는 null을 반환하지만, (ibaction) 그것은 정상적으로 작동합니다.코코아 xcode 4.3 전역 변수
문제는 평가 순서와 관련이 있습니다. 문제의 변수가 viewDidLoad:
의 시간에 초기화되지 않았지만 작업이 실행될 때까지 초기화가 완료되었습니다.
나중에 viewDidLoad:
보다 나중에 발생하는 다른 콜백에서 전역에 액세스하여 타이밍을 조정할 수 있지만 문제를 방지하려면 전역 변수 대신 글로벌 싱글 톤을 사용할 수 있습니다.
헤더 :
@interface Globals
+(MyGlobal*)global;
@end
당신이 당신의 글로벌 상태를 유지하는 별도의 클래스를 확인,이 같은 글로벌 변수에 액세스하는 데 사용하고, 해당 클래스 메소드를 호출해야하는 장소에서의 헤더를 포함
구현 :
@implementation Globals
+(MyGlobal*)global {
static MyGlobal* _global;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_global = [[MyGlobal alloc] init];
});
return _global;
}
@end
사용법 : 당신은 ViewDidApp에서 그것을 액세서하려고
MyGlobal *g = [Globals global];
했나 귀? – Vaquita
@Jayashankar, 그것이 ViewDidAppear에서 일한 팁에 대해 고맙습니다. – shakyeb