你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> IOS開發之不同版本適配問題3(#ifdef __IPHONE_7_0 BaseSDK Development Target)

IOS開發之不同版本適配問題3(#ifdef __IPHONE_7_0 BaseSDK Development Target)

編輯:IOS開發綜合

繼續之前的文章

在xcode中又兩個地方設置sdk,一個是Development Target,指的是編譯後的app可再終端的哪個版本上運行,設置方法如圖

\


另外一個是Base SDK,指的是當前編譯所用的SDK版本,設置方法如圖

\


這兩個在開發的時候需要注意,比如用xcode5.0默認的設置開發的app是iOS7.0的,想要適配iOS6.1,需要將Development Target改成iOS 6.1,並且將模擬器設置成iOS6.1,再運行程序的話就是在iOS6.1下邊運行了,但是如果不設置BaseSDK的話,工程就是基於SDK7.0編譯而基於SDK6.1運行,這樣極有可能崩潰,比如因tintColZ喎?/kf/ware/vc/" target="_blank" class="keylink">vcsr00NTV0rK7tb22+LHAwKOho8v50tS198rUtcTKsbry0ru2qNKqyejWw0Jhc2VTREuhozwvcD4KPHA+u7nKx9aux7DOxNXCtcTA/dfTo6zU2nhjb2RlNS4wz8LQwr2o0ru49rmks8yjrMSsyM+1xERldmVsb3BtZW50IFRhcmdldLrNQmFzZVNES7a8ysc3LjCjrNTaQXBwRGVsZWdhdGUubc7EvP61xGRpZEZpbmlzaExhdW5jaGluZ1dpdGhPcHRpb25zt723qMDvsd/QtMnP0ru+5DwvcD4KPHA+PHByZSBjbGFzcz0="brush:java;">self.window.tintColor = [UIColor redColor];
運行程序,不會出錯。現在將Development Target改成6.1,將模擬器改成6.1。

然後運行,編譯通過,但是運行崩潰,打印

2014-03-21 09:26:58.253 TestTarget2[77981:907] -[UIWindow setTintColor:]: unrecognized selector sent to instance 0x7572850
2014-03-21 09:26:58.284 TestTarget2[77981:907] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIWindow setTintColor:]: unrecognized selector sent to instance 0x7572850'

這是因為程序是在SDK7.0下編譯的,tintColor沒有問題,但是在SDK6.1下運行,6.1中是沒有tintColor的,結果就崩潰了。將BaseSDK改成6.1,再運行,就會編譯出錯,無法運行

\

將上邊一句改成

#ifdef __IPHONE_7_0
    self.window.tintColor = [UIColor redColor];
#endif

再運行,完美通過……

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved