Iphone-未显示UIView

Iphone-未显示UIView,iphone,activity-indicator,Iphone,Activity Indicator,我对UIView有一个奇怪的问题: 我想显示我用Interface Builder创建的活动指示器视图,以指示长时间运行的活动 在我的主要viewController的viewDidLoad函数中,我初始化ActivityIndicator视图,如下所示: - (void)viewDidLoad { [super viewDidLoad]; appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] dele

我对UIView有一个奇怪的问题:

我想显示我用Interface Builder创建的活动指示器视图,以指示长时间运行的活动

在我的主要viewController的viewDidLoad函数中,我初始化ActivityIndicator视图,如下所示:

- (void)viewDidLoad {
    [super viewDidLoad];
    appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];        
    load = [[ActivityIndicatorViewController alloc] init];
    ...
当我按下按钮时,它称为iAction:

- (IBAction)LaunchButtonPressed{            
    // Show the Activity indicator view.
    [self.view addSubview:load.view];

    // eavy work 
    [self StartWorking];    

    // Hide the loading view.
    [load.view removeFromSuperview];    
}
在StartWorking函数中,我向一个internet服务器请求并解析它返回给我的XML文件

问题是,如果我调用StartWorking函数,应用程序启动时不会显示Activity Indicator视图,而是使用StartWorking函数。 然而,如果我删除对StartWorking函数的调用,则会显示视图


有人能解释为什么吗您是否尝试在其他线程上调用StartWorking方法?
也许它繁重的过程阻止了其他指令的发生

看看这个类,特别是detachNewThreadSelector:toTarget:withObject:method

编辑:关于池问题,如果在其他线程上调用StartWorking方法,则需要在该方法中创建池:

- ( void )StartWorking
{
    NSAutoreleasePool * pool = [ [ NSAutoreleasePool alloc ] init ];

    /* Code here... */

    [ pool release ];
}
替换:
[self.view addSubview:load.view]

与:
[自执行选择器:@选择器(添加加载子视图)延时后:0.1f]

并创建方法:
-(void)addLoadingSubview{[self.view addSubview:load.view];}

好的,我找到了一个基于santoni答案的解决方案:

- (IBAction)LaunchButtonPressed{            
    // Show the Activity indicator view.
    [self performSelector:@selector(ShowActivityIndicatorView) withObject:nil afterDelay:0];

    // eavy work 
    [self performSelector:@selector(StartWorking) withObject:nil afterDelay:2];  

    // Hide the loading view.
    [load.view removeFromSuperview];    
}
活动指示器视图在调用eavy函数之前显示


感谢您的回答。

视图是在延迟后显示的,还是中的视图根本不显示?视图是在延迟后显示的。我已经尝试过了,但结果是一样的。我使用了:[自执行选择器:@selector(ShowActivityIndicatorView),对象:nil afterDelay:0.1f];它工作正常,但我所有的自动释放对象都在泄漏,因为没有池你应该在线程中小心操作(重功能)。我通常更喜欢在线程中实现轻量级函数,而让重的函数在主线程中实现。