我有一些代碼在那裏我試圖修改一個的CGRect的屬性,並設置其它的CGRect這個新框架:調試/發佈構建視圖之間的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];
這工作正常,在調試版本和發佈版本較新的iPhone。然而,運行在3G iPhone的發佈版本上會產生一些瘋狂的結果,並會混淆視圖。
預期結果(用較新的手機作品):
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
結果爲iPhone 3G運行4.2固件發佈版本(這發生在任何固件):
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 2012-01-01 22:59:48
在設置'frame.origin.x'的行之前添加某種睡眠呼叫(或spinwait)。如果這樣可以解決問題,那麼您有一個競爭條件,您應該使用適當的同步來解決這個問題。 – CodesInChaos 2012-01-01 23:45:53