<var id="7vpjv"><noframes id="7vpjv">

              全國服務熱線:400-660-5510
              首頁 > IOS開發>iOS 9 App Thinning
              11 2017 April

              iOS 9 App Thinning

              發布日期:2017-04-11
              瀏覽數: 7493
                      App Thinning 是蘋果在去年 WWDC, 也就是 iOS 9 中推出的為 App 瘦身的一個新的技術。 App Thinning 主要分為 3 個部分:
                      * App Slicing
                      * Bitcode

                      * On Demand Resources

                      App Slicing
                      我們正常的應用中都會用到圖片資源,為了適配 iPhone 6 Plus 以及 iPhone 6, 圖片資源需要包含 @2x 的圖片 和 @3x 的圖片,而 Slicing 就是在這一步進行優化,Slicing 會根據用戶在 App Store 下載的不同設備選擇對應的資源。例如:當用戶使用 iPhone 6 在 App Store 上下載 App 的時候,App Store 只會給予他 @2x 的圖片,而不會像以前一樣,不管三七二十一我把所有的資源都給你,根據蘋果的描述,這大約能節約你 30% 到 50% 的大小。而你要做的事情,僅僅是使用 Xcode 7 IDE, 并且使用其中的 Assert Catalog 管理你的資源文件。
              不過 Slicing 因為 iCloud 備份的問題, 知道 iOS 9.0.2 以及 Xcode 7.0.1 才可以被使用
                      Bitcode
                      Bitcode 是蘋果在你 App 被下載之前做的另外一件優化。Bitcode 是你的代碼編譯為最終可執行文件的中間的一層,當你的 App 以 Bitcode 的形式提交到 iTunes Connect 的時候,iTunes Connect 會自動為合適的機器編譯出對應的代碼,例如:對于 64 位機器的 iPhone 6 或者 iPad Air 2,Bitcode 會為其編譯出適合 64 位機器可執行文件。
                      對于 iOS app 來說, Bitcode 不是必須的,但 Bitcode 編譯選項為 Yes(這里應該只是一個過渡期,有些第三方庫如果不在繼續維護了需要盡快換掉), 對于 tvOS 和 watchOS 的 app,Bitcode 的的選項必須為 Yes。
                      On Demand Resources
                      最后一個 App Thinnig 步驟是 On Demand Resources, On Demand Resources 在游戲的制作中比較常見,主要為了一些沒用的資源在用到了才會去下載,比如,當我們設計一個游戲有 3 個關卡的時候,第一關的資源在 App 被下載的時候就已經下載好了,但是,出于對 App 大小的考慮,此時,第二關的資源是不需要下載的, 可以等到第一關結束以后,或者第一關進行到一半的時候后臺進行下載。
                      On Demand Resources 中的資源包括了 圖片,音效等等, 下面是一個 On Demand Resources 的 Demo, 語言的話,我們選用 Swift.
                      Demo 是這樣的: 首頁只有一個 Button,默認情況下 Assets 里面的圖片 Group 沒有被下載, 當點擊 Button 以后,會先去看 Group 時候已經存儲下載完畢, 如果沒有下載,則會去觸發一個下載請求,下載完成后,把圖片顯示到居中的位置。

                      @IBAction func downloadBarButtonItemTouchUpInside(sender: UIButton) {
                      let tags = NSSet(array: ["Group"])
                      self.resourceRequest = NSBundleResourceRequest(tags: tags as! Set)
                      self.resourceRequest?.conditionallyBeginAccessingResourcesWithCompletionHandler() {
                      resourceAvailable in
                      if resourceAvailable {
                      dispatch_async(dispatch_get_main_queue()) {
                      self.imageView.image = UIImage(named: "Group")
                      }
                      } else {
                      self.resourceRequest?.beginAccessingResourcesWithCompletionHandler() {
                      error in
                      if error == nil {
                      dispatch_async(dispatch_get_main_queue()) {
                      self.imageView.image = UIImage(named: "Group")
                      }
                      } else {
                      print(error)
                      }
                      }
                      }
                      }

                      }

                      另外,我們可以通過 Xcode 中的 Disk 來查看 On Demand Resources 的情況



              ?
               
               
              黄片污在线观看,黄片无码高清,黄片无码在线,黄片无码在线观看

                    <var id="7vpjv"><noframes id="7vpjv">

                          <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>