11月27號,蘋果AppStore下架包括拼多多、搜狗地圖、訊飛閱讀和悅跑圈在內的共718個App。據稱下架緣由是觸發了AppStroe審覈指南的2.5.2條例,即便用了熱更新技術。去年6月份,蘋果層因熱更新下架數萬款App。 ios
咱們知道,解壓後的圖片是由無數像素數據組成。每一個像素點一般包括紅、綠、藍和 alpha 數據,每一個值都是 8 位(0–255),所以一個像素一般會佔用 4 個字節(32 bit per pixel。少數專業的 app 可能會用更大的空間來表示色深,消耗的內存會相應線性增長)。下面咱們來計算一些一般的圖片開銷:git
普通圖片大小,如 500 * 600 * 32bpp = 1MB 跟 iPhone X 屏幕同樣大的:1125 * 2436 * 32bpp = 10MB 即刻中容許最大的圖片,總像素不超過1500w:15000000 * 32bpp = 57MB 有了大體的概念,之後看到一張圖能簡單預估,大概會吃掉多少內存。程序員
當前現象 github
只須要將證書拖到登陸,便可生成祕鑰 數據庫
APP內切換語言有一種比較簡單的實現方式,實現步驟是: 一、存儲語言狀態 二、刷新KeyWindow.rootViewController
三、刷新Bundle
四、切換語言對應的更新操做 實現過程:編程
//一、切換語言,AppleLanguages對應內容是數組,語言符合能夠經過Bundle.main.localizations查看
//切換至繁體中文,存儲狀態
UserDefaults.standard.set(["zh-Hant"], forKey: "AppleLanguages")
//二、刷新keyWindow,createRootViewController爲建立rootViewController的方法
UIApplication.shared.keyWindow?.rootViewController = Application.shared.createRootViewController()
//三、更換bundle
//在切換語言的時候,咱們須要執行一下,Bundle的exchangeBundle方法
extension Bundle {
static func getLocalizedBundle() -> Bundle {
if let languages = UserDefaults.standard.object(forKey: "AppleLanguages") as? [String],
let lan = languages.first,
let path = Bundle.main.path(forResource: lan, ofType: "lproj"),
let bundle = Bundle.init(path: path){
return bundle
} else {
return Bundle.main
}
}
static func exchangeBundle(){
//替換Bundle.main爲自定義的BundleLocal
object_setClass(Bundle.main, BundleLocal.self)
}
}
class BundleLocal: Bundle {
override func localizedString(forKey key: String, value: String?, table tableName: String?) -> String {
return Bundle.getLocalizedBundle().localizedString(forKey: key, value: value, table: tableName)
}
}
//四、其餘更新操做,如接口,UI界面
複製代碼
當咱們測試內購時,須要考慮內購到期的狀況。好比我測試購買了一個月的服務,那麼購買到期的狀況呢,不能傻傻地等一個月時間吧? 其實蘋果給出了不一樣內購時長在Debug狀況下對應的測試時間。 swift
在咱們不進行任何先後臺設置的狀況下,AVPlayer進入後臺,會自動暫停播放。再次回到前臺時,播放器會有必定機率自動恢復播放(多大機率未知,測試得出的結論)。數組
若是這個恢復播放不是咱們須要的,或者咱們須要避免這種不肯定的狀況發生,咱們能夠手動管理這個過程:緩存
NotificationCenter.default.addObserver(forName: UIApplication.didEnterBackgroundNotification, object: self, queue: nil) { (notification) in
self.player.pause()
}
NotificationCenter.default.addObserver(forName: UIApplication.didEnterBackgroundNotification, object: self, queue: nil) { (notification) in
//根據須要是否須要恢復播放
if shouleRecoverPlayer {
self.player.play()
} else {
self.player.pause()
}
}
複製代碼
觸發條件:app
UITabBarController
+ UINavigationController
組合UITabBar
帶半透明效果,isTranslucent
屬性爲 trueUIViewController
的 hidesBottomBarWhenPushed
屬性爲 true問題現象:
經確認是iOS12.1上的一個bug。 解決方案:
//MARK: - fix ios12.1 tabbar bug
let tabbar = UITabBar.appearance()
tabbar.isTranslucent = false
複製代碼
詳細內容能夠參考: 修復 iOS12.1 UITabBar 佈局位移bug - ZHFDBK的博客 - CSDN博客 swift - UITabBar items jumping on back navigation on iOS 12.1 - Stack Overflow
面對愈來愈多的identifier,改如何優雅地處理? 文中講了一些UITableViewCell
、UICollectionViewCell
、segues
、UIStoryboards
、UIViewController
中關於identifiers的重構方法。
移動應用的末日將要來臨? Medium科技板塊最近比較火的一篇文章,分上下兩篇,講述移動應用的前景和趨勢。
這是Realm創建的一個用於學習編程技術的網站,主要方式是視頻,內容配有字幕,而且都所有整理成文章。涵蓋範圍有Realm
, Android
, iOS
, JavaScript
, Architecture
等。
文章質量很是高!
由swiftgg團隊推出的接地氣、有價值的閒聊節目。在獲得,喜馬拉雅這種靠聽獲取信息的APP愈來愈受歡迎的時候,swiftgg也推出了適合咱們程序員的音頻節目。聽那些大牛討論關於swfit這四年,關於如何對待博客,不管從那個角度出發總能收貨一些東西。
應該是iOS端目前最好的流媒體緩存框架了。
Realm是一個開源的對象數據庫管理系統,最初用於移動(Android/iOS),也可用於Xamarin
或React Native
等平臺,等平臺,包括桌面應用(Windows),並得到Apache
許可。
對比FMDB,他的使用成本,維護成本都更低。
uTools是一個極簡、插件化、跨平臺的現代化桌面軟件。經過自由選配豐富的插件,打造你駕輕就熟的工具集合。 經過快捷鍵(默認alt+space)就能夠快速呼出這個搜索框。它至關聰明,能夠支持輸入、拖拽、自動粘貼等做爲輸入源,相應的插件也早已準備就緒,統一的設計風格和操做方式,助你高效的獲得正確的結果。 當你熟悉它後,可以爲你節約大量時間,讓你能夠更加專一的改變世界。
對比Alfred,他的不一樣就在於免費,使用簡單,更符合國人的習慣。