[iOS] 判斷iOS版本
身為開發者的我們,面對程式語言日新月異是非常正常的事情,iOS每年都會發佈更新,於是我們就必須去了解哪些API即將棄用(deprecated),在未來的專案就儘量不要去使用。
這張iOS支援陣列圖非常詳細地描述i設備的各種特性,點開放大來看可說是嘆為觀止!如果是個Apple粉絲開發者,那麼鐵定要好好徹底了解它:D
身為開發者的我們,面對程式語言日新月異是非常正常的事情,iOS每年都會發佈更新,於是我們就必須去了解哪些API即將棄用(deprecated),在未來的專案就儘量不要去使用。
這張iOS支援陣列圖非常詳細地描述i設備的各種特性,點開放大來看可說是嘆為觀止!如果是個Apple粉絲開發者,那麼鐵定要好好徹底了解它:D
時常能看到同一個有分付費版與免費版,但是又不想之後維護兩種版本的程式碼,該怎麼做呢?設定版本 (Set Version)還滿有技巧性的~
選擇 target -> Build Settings -> 搜尋 “preprocessor Macros"
在此我在Tarot with ad這個target的Debug和Release多定義AD=1。如此一來,只要在APP共用的AppDelegate加上判斷版本的method,即可讓所有Class使用。
TRAppDelegate.m定義這兩個method:
+(TRAppDelegate *)sharedAppDelegate
{
return (TRAppDelegate *)[[UIApplication sharedApplication] delegate];
}
-(BOOL)hasAd
{
#ifdef AD
return YES;
#else
return NO;
#endif
}
TRAppDelegate.h宣告這一個method,以便讓其它class呼叫:
+(TRAppDelegate *)sharedAppDelegate;
至於為何不宣告另一個method?因為透過上述method,Xcode可以自己找到另一個method來使用。
其它class只要#import “TRAppDelegate.h"即可使用該method來判斷版本。
-(void)versionInitial
{
if ([TRAppDelegate sharedAppDelegate].hasAd) {
//廣告版設定
}
else {
//非廣告版設定
}
}
參考:老闆的夥伴、iOS Multiple target in the same project。
為了儲存更多的資料,我們難免會在Core Data上增加Attribute,甚至為了方便管理資料庫,我們會分割單一Table為多個Table,而最簡單的Core Data Lightweight Migration,只要在某個method中加入幾行程式碼即可運作。
– (NSPersistentStoreCoordinator *)persistentStoreCoordinator
HappyMan・迴響