收到內(nèi)存警告需要到didReceiveMemoryWarning中處理
【小技巧】:
iOS6以后的內(nèi)存處理方式
[objc] view plain copy
還需要在info.plist進(jìn)行配置
【小技巧】:與UITableView配合實(shí)現(xiàn)下拉刷新
【小技巧】:可以實(shí)現(xiàn)瀑布流
提供了UUID,IDFA,IDFV,OpenUDID
【小技巧】:
UUID:
UUID是Universally%20Unique%20Identifier的縮寫(xiě),中文意思是通用唯一識(shí)別碼。它是讓分布式系統(tǒng)中的所有元素,都能有唯一的辨識(shí)資訊,而不需要透過(guò)中央控制端來(lái)做辨識(shí)資訊的指定。這樣,每個(gè)人都可以建立不與其它人沖突的UUID。在此情況下,就不需考慮數(shù)據(jù)庫(kù)建立時(shí)的名稱(chēng)重復(fù)問(wèn)題。蘋(píng)果公司建議使用UUID為應(yīng)用生成唯一標(biāo)識(shí)字符串。
開(kāi)發(fā)者可以在應(yīng)用第一次啟動(dòng)時(shí)調(diào)用一 次,然后將該串存儲(chǔ)起來(lái),替代UDID來(lái)使用。但是,如果用戶刪除該應(yīng)用再次安裝時(shí),又會(huì)生成新的字符串,所以不能保證唯一識(shí)別該設(shè)備。使用UUID,就要考慮應(yīng)用被刪除后再重新安裝時(shí)的處理。一個(gè)解決的辦法是:UUID一般只生成一次,保存在iOS系統(tǒng)里面,如果應(yīng)用刪除了,重裝應(yīng)用之后它的UUID還是一樣的,除非系統(tǒng)重置 。但是不能保證在以后的系統(tǒng)升級(jí)后還能用(如果系統(tǒng)保存了該信息就能用)。
IDFA:
[objc] view%20plain copy廣告標(biāo)示符是iOS%206中另外一個(gè)新的方法,提供了一個(gè)方法advertisingIdentifier,通過(guò)調(diào)用該方法會(huì)返回一個(gè)NSUUID實(shí)例,最后可以獲得一個(gè)UUID,由系統(tǒng)存儲(chǔ)著的。不過(guò)即使這是由系統(tǒng)存儲(chǔ)的,但是有幾種情況下,會(huì)重新生成廣告標(biāo)示符。如果用戶完全重置系統(tǒng)((設(shè)置程序 -> 通用 -> 還原 -> 還原位置與隱私) ,這個(gè)廣告標(biāo)示符會(huì)重新生成。另外如果用戶明確的還原廣告(設(shè)置程序-> 通用 -> 關(guān)于本機(jī) -> 廣告 -> 還原廣告標(biāo)示符) ,那么廣告標(biāo)示符也會(huì)重新生成。關(guān)于廣告標(biāo)示符的還原,有一點(diǎn)需要注意:如果程序在后臺(tái)運(yùn)行,此時(shí)用戶“還原廣告標(biāo)示符”,然后再回到程序中,此時(shí)獲取廣 告標(biāo)示符并不會(huì)立即獲得還原后的標(biāo)示符。必須要終止程序,然后再重新啟動(dòng)程序,才能獲得還原后的廣告標(biāo)示符。
在同一個(gè)設(shè)備上的所有App都會(huì)取到相同的值,是蘋(píng)果專(zhuān)門(mén)給各廣告提供商用來(lái)追蹤用戶而設(shè)的,用戶可以在 設(shè)置|隱私|廣告追蹤 里重置此id的值,或限制此id的使用,故此id有可能會(huì)取不到值,但好在Apple默認(rèn)是允許追蹤的,而且一般用戶都不知道有這么個(gè)設(shè)置,所以基本上用來(lái)監(jiān)測(cè)推廣效果,是戳戳有余了。
注意:由于idfa會(huì)出現(xiàn)取不到的情況,故絕不可以作為業(yè)務(wù)分析的主id,來(lái)識(shí)別用戶
IDFV:
[objc] view%20plain copyVendor標(biāo)示符是給Vendor標(biāo)識(shí)用戶用的,每個(gè)設(shè)備在所屬同一個(gè)Vender的應(yīng)用里,都有相同的值。其中的Vender是指應(yīng)用提供商,但準(zhǔn)確點(diǎn)說(shuō),是通過(guò)BundleID的DNS反轉(zhuǎn)的前兩部分進(jìn)行匹配,如果相同就是同一個(gè)Vender,例如對(duì)于com.somecompany.appone,com.somecompany.aunsigned char result[16];   const charchar *cStr = [[[NSProcessInfo processInfo] globallyUniqueString] UTF8String];   CC_md5( cStr, strlen(cStr), result );    _openUDID = [NSString stringWithFormat: @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%08x", result[0], result[1], result[2], result[3], result[4], result[5], result[6], result[7], result[8], result[9], result[10], result[11],result[12], result[13], result[14], result[15],  arc4random() % 4294967295];   
每臺(tái)iOS設(shè)備的OpenUDID是通過(guò)第一個(gè)帶有OpenUDID%20SDK包的App生成,如果你完全刪除全部帶有OpenUDID%20SDK包的App(比如恢復(fù)系統(tǒng)等),那么OpenUDID會(huì)重新生成,而且和之前的值會(huì)不同,相當(dāng)于新設(shè)備;
優(yōu)點(diǎn)是沒(méi)有用到MAC地址;不同設(shè)備能夠獲取各自唯一的識(shí)別碼,保證了唯一性,可以用于以往UDID的相關(guān)用途;從代碼分析OpenUDID的獲取,識(shí)別碼獲取方便并且保存謹(jǐn)慎。缺點(diǎn)是當(dāng)將設(shè)備上所有使用了OpenUDID方案的應(yīng)用程序刪除,且設(shè)備關(guān)機(jī)重啟,xcode徹底清除并重啟,重裝應(yīng)用程序去獲取OpenUDID,此時(shí)OpenUDID變化,與之前不一樣了,所有OpenUDID應(yīng)用卸載后,由U renderingMode屬性的默認(rèn)值是UIImageRenderingModeAutomatic,即UIImage是否使用Tint%20Color取決于它顯示的位置。 【小技巧】: 有些類(lèi),比如說(shuō)UINaviagtionBar,UISearchBar,UITabBar以及UIToolbar已經(jīng)有了這么命名的屬性。他們現(xiàn)在有了一個(gè)新的屬性:barTintColor。 【小技巧】: 為了避免使用新屬性的時(shí)候犯錯(cuò)誤,如果你的appp需要支持iOS6以前的系統(tǒng)的時(shí)候,請(qǐng)檢查一下。 在iOS7當(dāng)中,你可以通過(guò)AirPlay,藍(lán)牙或是其他的虛線機(jī)制了解是否有一個(gè)遠(yuǎn)程的設(shè)備可用。了解它的話,就可以讓你的app在恰當(dāng)?shù)臅r(shí)候做恰當(dāng)?shù)氖拢热缯f(shuō),在沒(méi)有遠(yuǎn)程設(shè)備的時(shí)候就不顯示AirPlay的icon。 在iOS7之前,是使用Reachability來(lái)檢測(cè)設(shè)備是否連接到WWAN或是Wifi的。iOS7在這個(gè)基礎(chǔ)上更進(jìn)了一步,它會(huì)告訴你的設(shè)備連接上的是那種蜂窩網(wǎng)絡(luò)。 這是CTTelephonyNetworkInfo的部分功能,它是CoreTelephony框架的一部分。iOS7還增加了currentRadioaccessUIImageRenderingModeAutomatic // 根據(jù)圖片的使用環(huán)境和所處的繪圖上下文自動(dòng)調(diào)整渲染模式。   UIImageRenderingModeAlwaysOriginal // 始終繪制圖片原始狀態(tài),不使用Tint Color。   UIImageRenderingModeAlwaysTemplate // 始終根據(jù)Tint Color繪制圖片,忽略圖片的顏色信息。   
UIImage *img = [UIImage imageNamed:@"myimage"];   img = [img imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];   
5、tintcolor%20VS%20barTintColor
UINavigationBar *bar = self.navigationController.navigationBar;   UIColor *color = [UIColor greenColor];   if ([bar respondsToSelector:@selector(setBarTintColor:)]) { // iOS 7+       bar.barTintColor = color;   } else {     bar.tintColor = color;   }   
6、UIButtonTypeRoundRect被UIButtonTypeSystem替代
7、新增檢查無(wú)線路由是否可用
@property (nonatomic, readonly) BOOL wirelessRoutesAvailable; //  是否有設(shè)備可以連接的無(wú)線線路?   @property (nonatomic, readonly) BOOL wirelessRouteActive; // 設(shè)備現(xiàn)在是否連接上了網(wǎng)絡(luò)   NSString *const MPVolumeViewWirelessRoutesAvailableDidChangeNotification;   NSString *const MPVolumeViewWirelessRouteActiveDidChangeNotification;    
8、更詳細(xì)蜂窩網(wǎng)絡(luò)信息
【小技巧】:
[objc] view%20plain copy注意:研究一下CTTelephonyNetworkInfo.h文件來(lái)看看是否有其他無(wú)線網(wǎng)絡(luò)類(lèi)型的的字符串常量。如果設(shè)備沒(méi)有連上的話currentRadioAccessTechnology則會(huì)返回nil。
iOS7以及Mavericks增加了iCloud%20Keychain來(lái)提供密碼,以及iCloud中一些敏感數(shù)據(jù)的同步。開(kāi)發(fā)者可以通過(guò)keychain中的kSecAttrSynchronizable%20key來(lái)遍歷dictionary對(duì)象。
由于直接處理keychain比較難,封裝庫(kù)提供了一個(gè)簡(jiǎn)單的處理keychain的方法。SSKeychain封裝庫(kù)可能是最有名的的一個(gè),作為一種福利,現(xiàn)在它支持在iCloud同步。
【小技巧】:
[objc] view%20plain copy在app中使用Webviews有時(shí)會(huì)讓人非常沮喪,即使只是顯示少量的HTMLneirong,Webviews也會(huì)消耗大量的內(nèi)容。現(xiàn)在iOS7讓這些變得簡(jiǎn)單了,你可以從用少量代碼在HTML文件中創(chuàng)建一個(gè)NSAttributedString。
【小技巧】:
[objc] view%20plain copy【小技巧】:
[objc] view%20plain copyUIScreenEdgePanGestureRecognizer 繼承自UIPanGestureRecognizer ,它可以讓你從屏幕邊界即可檢測(cè)手勢(shì)。
【小技巧】:
[objc] view%20plain copy滾動(dòng)的時(shí)候可以讓鍵盤(pán)消失是一種非常好的體驗(yàn),蘋(píng)果給UIScrollView添加了一個(gè)很好用的屬性keyboardDismissMode,現(xiàn)在僅僅只需要在Storyboard中改變一個(gè)簡(jiǎn)單的屬性,或者增加一行代碼,你的app可以和辦到和Messages%20app一樣的事情了。
[objc] view%20plain copyiOS給Core%20Image增加了兩種人臉檢測(cè)功能:CIDetectorEyeBlink以及CIDetectorSmile。這也就是說(shuō)你現(xiàn)在可以在照片中檢測(cè)微笑以及眨眼。
【小技巧】:
[objc] view%20plain copy【小技巧】:
[objc] view%20plain copy取消了擬物化,變成了扁平化設(shè)計(jì)
UITabbar,UIbarButtonItem,navigationBar,都以特殊形式渲染,圖片沒(méi)有內(nèi)部顏色,通過(guò)tinColor渲染圖片(開(kāi)發(fā)者可以通過(guò)渲染模式使用原圖顏色)。navigationBar及導(dǎo)航欄也作為self.view的內(nèi)容,所以self.view的原點(diǎn)從導(dǎo)航欄下面變成了,狀態(tài)欄的頂端。(可以通過(guò)self.navigationController.navigationBar.translucent以及self.edgesForExtendedLayout來(lái)決定是否以ios7或ios6樣式顯示)
可以用系統(tǒng)自帶框架做小 可以根據(jù)不同尺寸,橫屏豎屏在StoryBoard上或者Xib上對(duì)app進(jìn)行適配 健康方面  智能家居方面 游戲方面 如果你的程序有mac版本,那么它可以和ios版本進(jìn)行自由的交互 (%20例如系統(tǒng)的電話,短信,facetime功能) CLLocation的floor可以告訴你當(dāng)前的樓層 指紋識(shí)別方面 一個(gè)新的相冊(cè)框架,替代了原來(lái)的AL 其相當(dāng)于ipad中的UIPopoverController,在某個(gè)空間周邊顯示一個(gè)氣泡菜單 【小技巧】: 其類(lèi)似于BaaS,與之不同的是,Cloud%20Kit傾向于對(duì)數(shù)據(jù)的集成。你可以不更改應(yīng)用現(xiàn)有的數(shù)據(jù)模型和結(jié)構(gòu),而只是使用 Cloud%20Kit 來(lái)從云端獲取數(shù)據(jù)或者向云端存儲(chǔ)數(shù)據(jù)。但是其最大限制在于只能用于蘋(píng)果端。 http://blog.csdn.net/songhongri/article/details/39482067 【小技巧】: Today%20Widget%20Extension http://blog.csdn.net/kuloveyouwei/article/details/44019815 第三方輸入法 Extension Document%20Picker%20Extension Photo%20Editing%20Extension Shared%20Extension Action%20Extension Watch%20Extension 一套圖形接口 與OpenGL 和Direct3D類(lèi)似主要制作3D相關(guān) 蘋(píng)果支付相關(guān)sdk 如果cell用autolayout布局,只需要兩行代碼就可以實(shí)現(xiàn)自動(dòng)計(jì)算高度 WKWebView可以替代UIWebView   默認(rèn)https,如果不支持https,需要到info.plist做配置 【小技巧】: 在iOS9中,如果使用URL%20scheme必須在"info.plist"中將你要在外部調(diào)用的URL%20scheme列為白名單,否則無(wú)法跳回來(lái)。 在info.plist中設(shè)置 LSApplicationQueriesSchemes類(lèi)型為數(shù)組,下面添加所有你用到的scheme 由于watchOS%202的架構(gòu)變化,需要這么一個(gè)東西來(lái)對(duì)iPhone和Watch進(jìn)行雙向通信 可以讓自己的app在系統(tǒng)搜索欄搜到內(nèi)容 可以針對(duì)設(shè)備對(duì)app優(yōu)化,讓安裝包變小 但你的app需要展示一個(gè)WebView又不需要太多定制的時(shí)候,用它來(lái)替換掉你現(xiàn)在在用的UIWebView或者WKWebView。他可以讓Safari以一個(gè)Controller的形式加載你的網(wǎng)頁(yè),和系統(tǒng)的Safari完全共享Cookie和Autofill等特性,最重要的,Safari的javaScript引擎 http://www.jianshu.com/p/b552bedbc3ef 可以用Xcode進(jìn)行項(xiàng)目的自動(dòng)化測(cè)試了 對(duì)游戲的支持 (1)泛型  如: (2)可空標(biāo)記   如: (3)kindof 可以讓返回值用kindof 類(lèi)似于安卓的線性布局 控制器管理狀態(tài)欄 https://onevcat.com/2016/08/notification/ 那么在iOS%2010之前,我們使用UIView做動(dòng)畫(huà)效果或者自定義一些layer的動(dòng)畫(huà),如果開(kāi)始了,一般無(wú)法進(jìn)行停止操作更不能暫停操作,而且一些非常復(fù)雜的動(dòng)畫(huà)處理也比較麻煩,但是在iOS10,蘋(píng)果退出了一個(gè)全新的API  UIViewPropertyAnimator,可供我們處理動(dòng)畫(huà)操作UIViewPropertyAnimator 是 iOS%2010 中新增的一個(gè)執(zhí)行 View動(dòng)畫(huà)的類(lèi),具有以下特點(diǎn): 可中斷性 可擦除 可反轉(zhuǎn)性 豐富的動(dòng)畫(huà)時(shí)間控制功能 iOS%2010 蘋(píng)果官方建議我們使用sRGB,因?yàn)樗阅芨茫矢S富。 在iOS 10 UITextField添加了textContentType枚舉,指示文本輸入?yún)^(qū)域所期望的語(yǔ)義意義。 使用此屬性可以給鍵盤(pán)和系統(tǒng)信息,關(guān)于用戶輸入的內(nèi)容的預(yù)期的語(yǔ)義意義。例如,您可以指定一個(gè)文本字段,用戶填寫(xiě)收到一封電子郵件確認(rèn)uitextcontenttypeemailaddress。當(dāng)您提供有關(guān)您期望用戶在文本輸入?yún)^(qū)域中輸入的內(nèi)容的信息時(shí),系統(tǒng)可以在某些情況下自動(dòng)選擇適當(dāng)?shù)逆I盤(pán),并提高鍵盤(pán)修正和主動(dòng)與其他文本輸入機(jī)會(huì)的整合。 //值為 1 [[[[UIDevice currentDevice] systemVersion] substringToIndex:1] integerValue] //值為10.000000[[UIDevice currentDevice] systemVersion].floatValue, //值為10.0 [[UIDevice currentDevice] systemVersion] http://vongloo.me/2016/09/10/Make-Your-Xcode8-Great-Again/?utm_source=tuicool&utm_medium=referral 【小技巧】: 用 [[UIApplication sharedApplication] openURL:nil options:nil completionHandler:nil]代替。 ios10字體變大,有可能字體顯示不全,所以lable大小不要寫(xiě)死 iOS 10 對(duì)UICollectionView進(jìn)一步的優(yōu)化。 iOS 9中默認(rèn)非HTTS的網(wǎng)絡(luò)是被禁止的,當(dāng)然我們也可以把NSAllowsArbitraryLoads設(shè)置為YES禁用ATS。不過(guò)iOS 10從2017年1月1日起蘋(píng)果不允許我們通過(guò)這個(gè)方法跳過(guò)ATS,也就是說(shuō)強(qiáng)制我們用HTTPS,如果不這樣的話提交App可能會(huì)被拒絕。但是我們可以通過(guò)NSExceptionDomains來(lái)針對(duì)特定的域名開(kāi)放HTTP可以容易通過(guò)審核。UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];  UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"好的" style:UIAlertActionStyleDefault handler:nil];  [alertController addAction:cancelAction];  [alertController addAction:okAction];  [self presentViewController:alertController animated:YES completion:nil];  
2、SizeClasses
3、Health%20Kit
4、Home%20Kit
5、SceneKit
6、Handoff
7、CLFloor室內(nèi)定位
8、TouchID
9、PhotoKit
10、UIPopoverPresentationController
MyViewController*   contentVC = [[MyViewController alloc]init];    contentVC.preferredContentSize = CGSizeMake(110, 160);    contentVC.modalPresentationStyle = UIModalPresentationPopover;     self.popover = contentVC.popoverPresentationController;     self.popover.delegate = self;    self.popover.backgroundColor = [UIColor greenColor];    self.popover.sourceView =button;    self.popover.sourceRect = button.bounds;     self.popover.permittedArrowDirections = UIPopoverArrowDirectionUp;    [self presentViewController:contentVC animated:YES completion:nil];//推出popover   
11、Cloud%20Kit
12、全新的通知機(jī)制
13、定位權(quán)限的變化
// 當(dāng)使用iOS8定位的時(shí)候需要請(qǐng)求用戶授權(quán),且在info.plist里添加字段NSLocationAlwaysUsageDescription請(qǐng)求用戶授權(quán)的描述  // iOS7僅僅需要在info.plist里添加字段Privacy - Location Usage Description請(qǐng)求用戶授權(quán)的描述  if (IOS8) {  [self.maneger requestAlwaysAuthorization];//請(qǐng)求用戶授權(quán)  }  
14、各種小插件
15、Metal%20Kit
16、Apple%20Pay
17、tableviewcell自動(dòng)適應(yīng)高度
self.tableView.estimatedRowHeight = 44.0f;  self.tableView.rowHeight = UITableViewAutomaticDimension;  
18、WebKit
19、Swift語(yǔ)言
iOS%209
1、https網(wǎng)絡(luò)
2、后臺(tái)定位
_locationManager.allowsBackgroundLocationUpdates = YES;  
3、Bitcode
4、inHouse需要進(jìn)入系統(tǒng)設(shè)置權(quán)限(彈窗同意)才能安裝
5、URL%20scheme
6、蘋(píng)方
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];  
9、Watch%20Connectivity
10、Spotlight 
11、App%20Thinning
12、Safari%20Services%20Framework(SFSafariViewController)
13、3D%20touch
14、UI%20Test
15、GameplayKit,ReplayKit,Model%20I/O
16、語(yǔ)法相關(guān)
NSArray<NSString*>* datas;  
@property (nonatomic, strong) NSArray *__nonull names;  @property (nonatomic, strong, nonnull) NSarray *names;  
17、UIStackView
18、preferredStatusBarStyle
iOS%2010
1、User%20Notifications
2、iMessage%20Apps 
tabBar.unselectedItemTintColor =[UIColor redColor];  
10、跟著系統(tǒng)字體變化
[objc] view%20plain copy self.labels.font =[UIFont preferredFontForTextStyle:UIFontTextStyleBody];    self.labels.adjustsFontForContentSizeCategory = YES;  
11、UIViewPropertyAnimator屬性動(dòng)畫(huà)器
12、UIColor新方法
+ (UIColor*)colorWithDisplayP3Red:(CGFloat)displayP3Red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha   NS_AVAILABLE_IOS  (10_0);  
13、ipv6適配
14、UITextContentType
15、UIScrollView新增refreshControl
16、判斷系統(tǒng)版本
17、Xcode8不能用插件
18、[[UIApplication sharedApplication] openURL被廢棄
19、字體變化
20、UICollectionView性能優(yōu)化
21、https適配
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注