リリース ビルドでのみ発生すると思われる iOS の問題をデバッグしようとして困惑しています。これは、オプティマイザが私のコードでうまく機能しないことを行っていることを示しているようです。クラッシュするコードは、次のようにバイナリ データを NSMutableData インスタンスにシリアル化するコードです。
[_data increaseLengthBy:sizeof(CFSwappedFloat64)];
*((CFSwappedFloat64 *)[self pointerAtOffset]) = CFConvertFloat64HostToSwapped(value);
_offset += sizeof(CFSwappedFloat64);
_data は NSMutableData インスタンスです。pointerAtOffset と、このクラスの init メソッドは次のように定義されます。
- (unsigned char *)pointerAtOffset {
return ((unsigned char *)_data.mutableBytes) + _offset;
}
- (id)init {
if( self = [super init] ) {
_data = [[NSMutableData alloc] initWithCapacity:1028];
_offset = 0;
}
return self;
}
奇妙なことに、NSLog print ステートメントを追加すると、バグが修正されます。
[_data increaseLengthBy:sizeof(CFSwappedFloat64)];
NSLog(@"%d - %d", (int)_data.mutableBytes, _offset);
*((CFSwappedFloat64 *)[self pointerAtOffset]) = CFConvertFloat64HostToSwapped(value);
_offset += sizeof(CFSwappedFloat64);
これを引き起こしている可能性のあるアイデアはありますか?NSLog ステートメントのおかげで機能するコードをデプロイするのは、ちょっと不安です。