在ViewDidLoad之后,iphone开发控制为null

时间:2011-04-21 06:05:55

标签: iphone

我是Iphone dev和obj c的新手。我正在尝试在加载视图时调用Web服务,并在从Web服务检索结果所花费的时间内显示活动指示符。

我的问题是,ViewDidLoad完成后,我的activityindicator和标签将变为空。因此,在Web服务调用之后,我无法操纵任何控件。

我无法理解为什么会这样;显然,我对基础知识缺乏了解。我在这方面做了一些功课,但我还没有到达任何地方。如果有人可以解释为什么在viewdidload完成后控件变为空,这将非常有用。

更新:谢谢你的回答。在viewdidload,我正在执行以下操作,我正在为活动指示器设置动画并为我的textview分配一些值。然后我打电话给网络服务。调试代码,我意识到一旦viewdidload完成并调用-(void) connection: (NSURLConnection *) connection didReceiveResponse:(NSURLResponse *),我的文本视图/ activityindicator就会变为空。

(void)viewDidLoad {
    [activityindicator startAnimating];

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

1 个答案:

答案 0 :(得分: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;

然后在viewDidLoad中的.m文件中:

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

使用 self.name 而不仅仅是名称非常重要,因为前者调用属性setter方法,后者则不然(对于正确保留属性很重要)

HTH,这显然是一般的,但你的问题也是如此:) 奥德。

相关问题