以下是我在vievDidLoad中的代码
CMMotionManager *motionmanager = [[[CMMotionManager alloc]init]autorelease];
NSString string1 = [NSString stringwithFormat:@"%s", ([motionmanager.isGyroAvailable} ? @"Available" : @"Not Available"));
在Instruments中,我在XCode 4.5中引用CMMotionManagerInternal会导致内存泄漏 我的代码出了什么问题?
答案 0 :(得分:1)
CMMotionManager
行似乎没问题,但是你应该考虑保留引用(使其成为实例变量而不是自动释放它),并在停止更新数据时手动释放CMMotionManager
。
另一条线让我更烦恼。
NSString string1 = [NSString stringwithFormat:@"%s", ([motionmanager.isGyroAvailable} ? @"Available" : @"Not Available"));
虽然你应该:
NSString *string1 = [NSString stringwithFormat:@"%@", ([motionmanager.isGyroAvailable} ? @"Available" : @"Not Available"));
因此string1
应为指针,格式为@"%@"
而不是@"%s"
。
答案 1 :(得分:0)
这似乎是模拟器中的一个错误。它在设备上正常工作。