私は1 CGRectの属性を変更しようとしているいくつかのコードを持っており、この新しいフレームで別のCGRectを設定します。デバッグビルドとリリースが新しいiPhoneのためのビルドにiOSのデバッグ/リリース間の精度の違いによって、表示が乱れてしまいますか?
actView = [[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray ] autorelease];
actView.hidesWhenStopped = NO;
[actView startAnimating];
frame = actView.frame;
frame.origin.x = mainLabel.frame.origin.x - frame.size.width - TBLCELLPADDING;
frame.origin.y = mainLabel.frame.origin.y;
actView.tag = TBLCELLACTTAG;
actView.frame = frame;
[cell.contentView addSubview:actView];
これが正常に動作します。しかし、3G iPhone用のリリースビルドで実行すると、いくつかの狂った結果が生成され、ビューが混乱する。
期待される成果(新しい携帯電話で動作します):リリースビルドで4.2のファームウェアを実行しているiPhone 3G(これは任意のファームウェア上で起こる)のための
2012-01-01 14:41:43:449 myapp [691:775] Loading MainLabel: 122.000000 26.000000
2012-01-01 14:41:43:605 myapp[691:775] Loading Frame: 97.000000 26.000000
2012-01-01 14:41:43:713 myapp[691:775] Loading ActView: 97.000000 26.000000
結果:
2012-01-01 14:43:39:516 myapp[706:775] Loading MainLabel: 122.000000 26.000000
2012-01-01 14:43:39:589 myapp[706:775] Loading Frame: 26.000000 26.000000
2012-01-01 14:43:39:792 myapp[706:775] Loading ActView: 26.000000 0.000000
これをねじ込むされますこの古いiPhoneのために私のアプリを越えてすべてのアップビュー。
コードの面で具体的にこれを処理する方法はありますか?または、古いiPhoneのビルド設定で何かを変更する必要がありますか?
何らかの競合状態に似ています。 – CodesInChaos
'frame.origin.x'を設定する行の前にある種のスリープコール(またはspinwait)を追加します。問題が解決されない場合は、適切な同期を使用して修正する必要がある競合状態が発生しています。 – CodesInChaos