iOS 9新特性

一 . 關(guān)鍵字


1. nonnull代表: 不為空

  • 下面有兩種寫法, 在括號里面和外面寫

2. nullable代表: 可以空

  • 默認的屬性, 可以空
  • 這個關(guān)鍵字是給開發(fā)人員看的, 說明這個可以為nill, 下一步你要注意了

3. null_resettable代表: setter可以為空, getter不為空

  • 兩個屬性看似矛盾, 實則是要將setter方法做處理, 保證getter方法拿到的不是nil, 從下圖報警告可以看出
  • 控制器的View就是用的這個屬性, view可以賦值為nil, 但是一旦調(diào)用getter方法, view又會重新創(chuàng)建一個

4. NS_ASSUME_NONNULL_BEGIN和NS_ASSUME_NONNULL_END

  • 他們之間全部默認是nonnull屬性, 不為空

5. 上面幾種關(guān)鍵字, 用在方法中的注意點

  • _Nonnull等價于__nonnull
  • 編譯器會提示說明這個參數(shù)不能為nill
  • 基本數(shù)據(jù)類型不用加
以上的屬性指針對對象類型, 對整型不起作用

二. 泛型

1. 泛型的使用

2. 有利于點語法使用

  • 確定類型, 有利于點語法的使用
// 聲明
@property (nonatomic, strong) NSMutableArray<NSString *> *array;
// 使用
_array.lastObject.length;  點語法不報錯

3. 自定義泛型

  • 尖括號里面名字隨便寫, 可以參考NSMutableDictionary這個類, 定義了泛型
  • 以后可以這么試試
想訪問GXCar這個類的里面一層內(nèi)容, 前提是要初始化這個類.

4.協(xié)變性與逆變性

  • __covariant協(xié)變性, 子轉(zhuǎn)父類型
  • __contravariant逆變性, 父轉(zhuǎn)子類型

三. __ kindof使用

  • 可能是它 , 也可能是它的子類
xcode7中修改了tableview方法的返回值, kindof是像的意思, 說明可以是自己, 也可以是自己的子類, 這樣, 如果子類接受的時候就不用強轉(zhuǎn)xxxx * db = (xxxx *)xxxxx
  • 控制狀態(tài)欄隱藏顯示 (經(jīng)過測試ios 9以后如果加topwindow, 系統(tǒng)也沒崩潰)

  • View controller-based status bar appearance設置為NO : status統(tǒng)一管理, 每個界面都一樣, 只能用[UIApplication sharedApplication].statusBarHidden來設置
  • 如果這條key設置為YES : 就不是統(tǒng)一管理了, 交由控制器的- (BOOL)prefersStatusBarHidden方法來管理,
  • 系統(tǒng)默認設置為YES, 想統(tǒng)一就設NO
  • Status bar is initially hidden這個key是設置啟動頁有沒有狀態(tài)欄的.
  • YES就是隱藏, NO不隱藏. 它就干這個事!
  • 如果這個Key設置為YES隱藏, 上一個key設置為統(tǒng)一管理的NO, 那結(jié)果就統(tǒng)一了都TM隱藏了!
  • 解決辦法在AppDelegate中-didFinishLaunchingwithOptions方法下, 調(diào)用[UIApplication sharedApplication].statusBarHidden方法
控制器設置status方法

iOS9開始的新特性

  • nonnull__nonnull
  • nullable__nonnullable
  • null_resettable
  • NS_ASSUME_NONNULL_BEGIN \ NS_ASSUME_NONNULL_END
  • 泛型__contravariant__covariant
  • __kindof
  • UIWindow
  • Storyboard Reference
  • UIStackView
  • Search API
  • 3D touch

新技術(shù)的了解渠道

  • WWDC開發(fā)者大會視頻
  • 官方文檔
    • General -> Guides -> iOS x.x API Diffs

程序員的學習

iOS技術(shù)的學習

非iOS技術(shù)的學習

  • 數(shù)據(jù)結(jié)構(gòu)與算法(比如加密算法等等)
  • HTML5
  • JavaScript
  • Java(Android\JavaEE)
  • C++

非技術(shù)的學習

  • 管理\心理學\幸福\創(chuàng)業(yè)\歷史
  • 網(wǎng)易公開課
    • 各種國際名牌大學的課堂視頻
    • 名人講座(TED)
  • 名人講座\名人訪談

快速上手公司的舊項目

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • iOS 9新特性關(guān)鍵字:nonnull、nullable、null_resettable 注意這幾個關(guān)鍵字都是用來...
    Macgx閱讀 15,120評論 4 75
  • 新的屬性關(guān)鍵字 nullable可能為空,屬性修飾符 nonnull不能為空,屬性修飾符 null_resetta...
    rogertan30閱讀 435評論 0 1
  • 一、iPad多任務功能增強 1、全新的多任務界面 在iOS 9中,多任務界面從原來的橫向單層排列進化成層疊排列,從...
    劉勝強MT閱讀 3,659評論 0 5
  • iOS 9 新特性關(guān)鍵字:nonnull,nullable,null_resettable nonnull:表示不...
    柯浩然閱讀 431評論 1 1
  • 至今天:4-5日以來的盈利 (~2500),已經(jīng)都還給了市場;總結(jié)如下: 止損的重要性,止損是為了控制風險,而不是...
    W大先生閱讀 115評論 0 0

友情鏈接更多精彩內(nèi)容