以下是我在vievDidLoad中的代码
CMMotionManager *motionmanager = [[[CMMotionManager alloc]init]autorelease];
NSString string1 = [NSString stringwithFormat:@"%s", ([motionmanager.isGyroAvailable} ? @"Available" : @"Not Available"));
在Instruments中,我在XCode 4.5中引用CMMotionManagerInternal遇到内存泄漏
我的代码有什么问题?
最佳答案
CMMotionManager
行看起来不错,但是当您停止从引用中更新数据时,应该考虑保留引用(将其设置为实例变量而不是自动释放),并手动释放CMMotionManager
。
另一行让我更加困扰。你有
NSString string1 = [NSString stringwithFormat:@"%s", ([motionmanager.isGyroAvailable} ? @"Available" : @"Not Available"));
虽然您应该拥有:
NSString *string1 = [NSString stringwithFormat:@"%@", ([motionmanager.isGyroAvailable} ? @"Available" : @"Not Available"));
因此
string1
应该是指针,格式为@"%@"
而不是@"%s"
。关于iphone - CoreMotion中的内存泄漏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12722183/