我是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) {
}
}
}
答案 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,这显然是一般的,但你的问题也是如此:) 奥德。