2013-01-02 60 views
1

不工作可能重複:
presentViewController: crash on iOS <6 (AutoLayout)
How to use NSLayoutConstraint in iOS 6?
App failing to load應用工作在iOS 6,但在iOS 5

我剛剛開始在iOS6的SDK的應用工作,它在iOS 6設備和iOS 6模擬器上運行流暢,但不適用於iOS 5或iOS 5模擬器。我已經把我的部署目標:5.0

這是它給了我,當它試圖打開,但它失敗的錯誤...

2013-01-02 14:22:57.075 MyApp[34956:c07] *** Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named NSLayoutConstraint' 
*** First throw call stack: 
(0x14a5052 0xea5d0a 0x144da78 0x144d9e9 0x3327d7 0x3329af 0x3326b7 0x23336d 0xdae2c 0xdb3a9 0xdb5cb 0x3ba73 0x3bce2 0x3bea8 0x42d9a 0x2845 0x139d6 0x148a6 0x23743 0x241f8 0x17aa9 0x138ffa9 0x14791c5 0x13de022 0x13dc90a 0x13dbdb4 0x13dbccb 0x142a7 0x15a9b 0x257d 0x24a5) 
terminate called throwing an exception(lldb) 

我該如何解決這個問題?

+0

http://stackoverflow.com/questions/11252057/nslayoutconstraint-crashes-viewcontroller – Bryan

+1

http://stackoverflow.com/questions/12687979/how-to-use-nslayoutconstraint-in-ios-6 – Jack

+0

蘋果讓許多主要版本之間的變化。一般來說,如果您希望在以前的版本上使用代碼,那麼您應該主要針對以前的版本,並希望不會有太多不兼容的情況發生。 (但是,正如Brian所指出的那樣,僅僅將部署目標設置爲之前的版本是不夠的 - 您需要有意識地避免只能在較新版本中找到的設施。) –

回答

5

您正在使用AutoLayout,該功能僅適用於iOS6。您需要將您的iOS版本限制爲iOS6,或者需要通過進入.xib或故事板禁用AutoLayout並將其禁用。

+0

...或者從XIB中移除AutoLayout並僅在iOS6中注入它動態地在您的應用程序的代碼中。 – Till

+1

是的,我同意它的一個選項,但如果你要動態地添加自動佈局代碼,同時在代碼中執行相同的計算或舊版IB佈局的計算來支持iOS <6,那麼你可能只需要堅持老爲了簡單起見,當你只有ios6和更高版本時,向前邁進。這只是我的看法。 – rooster117

+0

確實有效。儘管iPhone5僅僅是iOS6和更高版本,但它有時是一種選擇。 – Till

1

不幸的是,將您的部署目標設置爲之前的操作系統版本實際上並沒有做任何事情來阻止您使用僅在更高版本中可用的API(或在此情況下爲Interface Builder功能)。

相關問題