我正在使用Xcode 4.3.2开发具有ARC的iPhone应用程序。在项目中导航时没有崩溃,但是当我看到使用泄漏工具执行项目时,可能会显示malloc泄漏;我不知道该如何解决...

我在项目..theme中使用了以下编码,以便在加载数据时隐藏其他视图。

[NSThread detachNewThreadSelector: @selector(StartActivityIndicator) toTarget:self withObject:nil];



-(void)StartActivityIndicator
{
    hideView= [[UIView alloc] initWithFrame: CGRectMake(0,0,320,480)];
    activityIndicator= [[UIActivityIndicatorView alloc] initWithFrame: CGRectMake(148,188, 24, 24)];
    hideView.backgroundColor =[UIColor blackColor];
    hideView.alpha=0.8;
    [hideView addSubview:activityIndicator];
    [self.view addSubview:hideView];
    [activityIndicator startAnimating];

}

此编码或此编码的任何替代形式是否有错误。

当启用ARC时,我们必须注意是否泄漏.....

最佳答案

您不需要使用线程来显示动画 Activity 指示器。代替

[NSThread detachNewThreadSelector: @selector(StartActivityIndicator) toTarget:self withObject:nil];

只需使用
[self StartActivityIndicator];

使用线程很容易导致问题,例如,通过在主线程之外访问与UI相关的类和方法,或者使用被声明为非原子的setter,或者忘记添加自动释放池,等等。除非必须,否则不要去那里。并且,如果需要的话,请使用中央集中调度而不是创建自己的线程。 :)

07-26 09:39