2011-04-21 4 views
0

나는 아이폰 개발자와 obj c 모두를 초보자입니다. 뷰가로드 될 때 웹 서비스를 호출하고 웹 서비스에서 결과를 검색하는 데 걸리는 시간 동안 활동 표시기를 표시하려고합니다.ViewDidLoad 후 iphone 개발 컨트롤이 null이됩니다.

내 문제는 ViewDidLoad이 완료되면 내 activityindicator 및 라벨이 null이되는 것입니다. 따라서 웹 서비스 호출 후에 나는 어떤 컨트롤도 조작 할 수 없다.

왜 이런 일이 발생하는지 이해할 수 없습니다. 분명히 기본에 대한 이해가 부족합니다. 나는 이것에 관해 약간의 숙제를했다. 그러나 나는 어디에도 가지 않고 있었다. 일부 사용자가 viewdidload이 완료되면 컨트롤이 null이되는 이유를 설명해 주시면 매우 도움이됩니다.

업데이트 : 답변 해 주셔서 감사합니다. viewdidload에서 나는 다음을 수행하고 있습니다. 활동 표시기에 애니메이션을 적용하고 일부 값을 textview에 할당하고 있습니다. 그런 다음 웹 서비스를 호출합니다. 코드를 디버깅하면 viewdidload이 완료되고 -(void) connection: (NSURLConnection *) connection didReceiveResponse:(NSURLResponse *)이 호출되면 내 텍스트보기/activityindicator가 null이됩니다.

(void)viewDidLoad { 
    [activityindicator startAnimating]; 

    if(myarray != NULL) { 
     myuitextview.text = @""; // displaying some values from array 
     @try{ 
      // call web service 
     } @catch (NSException *ns) { 
     } 
    }    
} 
+0

일부 코드를 게시하여 어디에 있는지 알 수 있습니까? 참조 계산과 메모리 할당에 대해 읽으 려합니다. 리테 이닝 횟수가 0에 도달했기 때문에 컨트롤 할당이 취소 된 것처럼 들립니다. –

답변

0

Objective-C에 오신 것을 환영합니다. :) 시작은 약간 거칠 수 있지만 한번 익숙해지면 멋지 네요.

코드없이 질문에 대답하기는 어렵습니다. 원인 변수는 여러 가지 이유로 "null이 될 수 있습니다". 그러나 당신이 초보자이기 때문에, 아마도 재산, 보유 등과 관련이 있습니다.

분명히 많은 관련 게시물이 있습니다. 여기에 하나입니다 : 당신의 .H 파일에 기본적으로

Objective-C 101 (retain vs assign) NSString 당신이 필요합니다 당신의하는 .m 파일에 다음

#import <UIKit/UIKit.h> 

@interface Car:NSObject{ 
    NSString *name; 
} 

@property(nonatomic, retain) NSString *name; 

그리고을의 viewDidLoad에 :

self.name = [[[NSString alloc] init] autorelease]; 
// For strings, can use convinient function: 
// self.name = [NSString string]; 

그것은 self.name를 사용하는 것이 매우 중요합니다이고 이름은이 아니라 setter 메서드를 호출하고 후자는 특성을 올바르게 유지하는 데 중요하지 않습니다.

HTH, 분명히 일반적이지만, 그래서 귀하의 질문입니다 :) Oded.