【发布时间】:2011-06-07 16:25:34
【问题描述】:
我的 UIActivityIndicatorView 总是让我的应用崩溃。
当我按下下载按钮时,指示器会显示并开始旋转。
但是当我停止它时,我只需要在某个地方触摸屏幕,我的应用就会崩溃。
.h
@interface DownloadViewController : UIViewController < FinishedParsing, NSFetchedResultsControllerDelegate >
{
UIActivityIndicatorView* indicator;
}
@property (nonatomic, retain) UIActivityIndicatorView* indicator;
- (void)initSpinner;
- (void)spinBegin;
- (void)spinEnd;
.m
@implementation DownloadViewController
@synthesize indicator;
- (IBAction)download:(id)sender
{
[self initSpinner];
[self spinBegin];
[OJSGatewayCommunicationService parseArticles :self];
}
- (void)initSpinner
{
self.indicator = [[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]autorelease];
// we put our spinning "thing" right in the center of the current view
CGPoint newCenter = (CGPoint) [self.view center];
indicator.center = newCenter;
[self.view addSubview:indicator];
}
- (void)spinBegin
{
[indicator startAnimating];
}
- (void)spinEnd
{
self.indicator.hidesWhenStopped = YES;
[indicator stopAnimating];
indicator.hidden = TRUE;
[indicator removeFromSuperview];
}
- (void) fetchPDF:(NSMutableArray *)chapters
{
[self spinEnd];
...
}
【问题讨论】:
-
请注意,在您的
initSpinner方法中,您是直接访问indicatorivar (indicator = ...),而不是通过属性修改器 (self.indicator = ...),因此指标不会被保留。 -
在您编辑的代码版本中,您现在过度保留和泄漏活动指示器,因为您使用了属性 (
self.indicator = ...),但您不再自动释放它。
标签: iphone xcode uiactivityindicatorview