2011-04-21 46 views
0

我是一個新手都Iphone dev和obj c。我試圖在加載視圖時調用Web服務,並在從Web服務檢索結果所需的時間內顯示活動指示器。iphone開發控制null後ViewDidLoad

我的問題是,一旦ViewDidLoad完成,我的activityindicator和標籤變爲空。因此,在Web服務調用之後,我無法操作任何控件。

我不明白爲什麼會發生這種情況;顯然這是我對基礎知識的缺乏理解。我在這方面做了一些功課,但我還沒有到達任何地方。如果有人能夠解釋爲什麼控制器在viewdidload完成後變爲空,那將會非常有幫助。

更新:謝謝你的答案。在viewdidload上,我正在執行以下操作,我正在爲活動指示器設置動畫並將一些值分配給我的textview。然後我打電話給一個網絡服務。調試代碼,我意識到一旦viewdidload完成,-(void) connection: (NSURLConnection *) connection didReceiveResponse:(NSURLResponse *)被調用,我的文本視圖/活動指示器就會爲空。

(void)viewDidLoad { 
    [activityindicator startAnimating]; 

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

你可以發佈一些代碼,所以我們知道你有什麼?您需要閱讀有關引用計數和內存分配的信息。聽起來這些控件已經被分配,因爲它們的保留數量達到了零。 – 2011-04-21 06:14:36

回答

0

歡迎來到Objective-C! :)開始可能有點粗糙,但一旦你習慣了它,這很好..

很難回答你的問題沒有代碼,因爲變量可以「變成空」的原因很多。然而,既然你是一個新手,它可能與財產,保留等

顯然有很多相關的主題上的主題。這裏有一個:Objective-C 101 (retain vs assign) NSString在.h文件中

基本上你需要:

#import <UIKit/UIKit.h> 

@interface Car:NSObject{ 
    NSString *name; 
} 

@property(nonatomic, retain) NSString *name; 

,然後在.m文件在viewDidLoad中:

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

使用self.name這是非常重要的而不只是名稱因爲前者調用屬性setter方法,後者不(正確保留屬性很重要)。

HTH,這顯然是一般的,但你的問題也是如此:) Oded。