这是一个简单的应用程序,从我的资源文件夹获取30张图片,在viewDidLoad
期间将它们放入NSMutableArray
,然后根据加速度计数据更改图片。我有一个来自IB的UIImageView
覆盖整个视图,当加速度计更新其信息时,它将uiimageview.image
交换为差异图。作品约10秒钟,然后崩溃与此:我的iPhone应用程序中的内存泄漏在哪里?
Program received signal: “0”.
Data Formatters temporarily unavailable, will re-try after a 'continue'. (Unknown error loading shared library "/Developer/usr/lib/libXcodeDebuggerSupport.dylib")
在这里四处寻找后,它听起来就像是一个内存泄漏。以下是我正在使用的代码:
Interface:
{
UIAccelerometer *accel;
IBOutlet UIImageView *pic;
NSMutableArray *picArr;
}
Implementation:
- (void)viewDidLoad
{
[super viewDidLoad];
picArr = [[NSMutableArray alloc] init]; //array of pics to be used
NSString *path = [[NSString alloc] init]; //dynamic path of images to save to array
for (int i = 1; i <= 30; i++)
{
path = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"nativity_test_%i", i] ofType:@"jpg"];
[picArr addObject:[[UIImage alloc] initWithContentsOfFile:path]];
}
accel = [UIAccelerometer sharedAccelerometer];
accel.delegate = self;
accel.updateInterval = 0.5f;
[path release];
pic.image = [picArr objectAtIndex:15];
}
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{
if(acceleration.y < 0.0f) //goes thru the tilted left pics
{
for (int i = 0; i <= 15; i++)
{
if(acceleration.y >= (-(15.0f-(double)i)/30.0f) && acceleration.y < (-(14.0f-(double)i)/30.0f))
{
pic.image = [picArr objectAtIndex:i+1];
}
}
}
else if(acceleration.y > 0.0f) //goes thru tilted right pics
{
for (int i = 1; i <= 14; i++)
if(acceleration.y > ((double)i/30.0f) && acceleration.y <= ((double)(i+1)/30.0f))
{
pic.image = [picArr objectAtIndex:i+15];
}
}
}
如果我遗漏了任何相关信息,请让我知道。
实例变量是不是属性有关系吗? – Marty 2010-11-08 23:15:07