1

以下はvievDidLoadの私のコードです

CMMotionManager *motionmanager = [[[CMMotionManager alloc]init]autorelease];

NSString string1 = [NSString stringwithFormat:@"%s", ([motionmanager.isGyroAvailable} ? @"Available" : @"Not Available"));

Instruments で、XCode 4.5 の CMMotionManagerInternal を参照してメモリ リークが発生します。私のコードの何が問題なのですか?

4

2 に答える 2

1

行は問題ないように見えますCMMotionManagerが、参照を保持することを検討し(インスタンス変数にして自動解放しないでください)、参照CMMotionManagerからのデータの更新を停止するときに手動で解放する必要があります。

他の行は私をもっと悩ませます。あなたが持っている

NSString string1 = [NSString stringwithFormat:@"%s", ([motionmanager.isGyroAvailable} ? @"Available" : @"Not Available"));

あなたが持っている必要がありますが:

NSString *string1 = [NSString stringwithFormat:@"%@", ([motionmanager.isGyroAvailable} ? @"Available" : @"Not Available"));

sostring1はポインタである必要があり、形式はそうではあり@"%@"ません@"%s"

于 2012-10-04T08:13:13.600 に答える
1

シミュレーターのバグのようです。デバイス上で正常に動作しています。

于 2013-02-07T18:28:08.187 に答える