2012-03-12 2 views
0

iOS5 (현재 5.1)와 Xcode 4 (현재 4.3)를 사용하고 있기 때문에 ViewDidLoad는 매번 호출됩니다. API에서 JSON 출력을 가져와야하지만, ViewDidLoad에 가져 오는 코드를 넣으면 매번 호출됩니다. 그래서 내 질문은, 확인/법적 (Appstore 관점에서) initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil NSURLConnection 코드를 사용하려면?initWithNibName의 NSURLConnection?

을 Heres 코드

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
     jsonContent=[[NSMutableData alloc]init]; 
     stateConnection= [[NSURLConnection alloc]initWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"MY API"]] delegate:self startImmediately:YES]; 
    } 
    return self; 
} 

편집 : 그 작동하지 않습니다. 이 메서드에서는 NSURLConnection 코드가 작동하지 않습니다. 그래서 내가 한 번만 호출되도록해야합니까?

+1

라고하기 때 , "initWithNibName"이 호출되지 않는 이유는 무엇입니까? "initWithNibName"을 호출하면 "viewDidLoad"만 호출됩니다. 그렇지 않습니까? – Satyam

+0

사실 그렇지만 중단 점은 해당 메서드에서 작동하지 않습니다. –

답변

1

설명대로 init 메소드에 코드를 삽입하는 것이 "합법적"입니다. 실제로, 예를 들어, viewDidLoad을 여러 번 호출 할 수 있습니다 (예 : 메모리 부족 경고 이후).

코드가 작동하지 않는 이유에 대해서는 확신할만한 충분한 컨텍스트가 없다고 생각합니다. if 블록의 코드가 실제로 실행되고 있습니까? 내 추측은 '아니오'입니다. iOS5 및 스토리 보드를 사용하는 경우 initWithNibName 메소드가 사용되지 않습니다. 동일한 코드를 initWithCoding: 메소드에 넣으면 더 많은 성공을 거둘 수 있습니다.

+0

예 스토리 보드를 사용하고 있습니다. 조언을 주셔서 감사합니다. 글쎄 NSUserDefaults있는 배열에 JSON 출력을 저장하고 이제 그 배열이 있는지 확인합니다. n 기본값은 연결이 호출되지 않습니다. 이 방법을 사용합니까? –

+0

@AkashMalhotra 방대한 양의 데이터가없는 한 괜찮습니다. –

0

viewDidLoad에 코드를 삽입해도 완벽합니다. 이미 초기화했는지 확인하십시오. 그와

if(jsonContent == nil) { 
    jsonContent=[[NSMutableData alloc]init]; 
    stateConnection= [[NSURLConnection alloc]initWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"MY API"]] delegate:self startImmediately:YES]; 
    } 
} 

은 '이 viewWillAppear' or viewDidAppear처럼, 더 나은 당신의 요구에 맞는 경우도 (나중에 시작할 수 확인, 또는 버튼이나 다른 작업을 누른 후. "의 viewDidLoad는"