大事件
這個月的大事件是高通與蘋果之間的專利大戰。高通分別在中國和德國對蘋果公司提起專利訴訟,結果均勝。蘋果將在中國禁售iPhoneX及之前的機型。在德國則是全面禁售。 加上新品手機的創新力度不夠,導致蘋果股票持續走低,四個月前,蘋果還是首個突破萬億美元市值的上市公司,到現在股價已經下跌了 36%,市值只有 7160 億美元,幾個月內市值損失接近 3000 億美元。
Tips
更換啟動圖不生效
現象:更換啟動圖,不生效,即使刪除舊圖,執行程式啟動圖仍然是之前的版本。 嘗試了刪除app重灌,clean、重啟Xcode,刪除DriverData,還試過挪圖片位置,改名字,均無效。最後嘗試了重啟手機->再安裝才正常。
問題分析:這個是系統問題,為了加快程式啟動的速度系統會把啟動圖做個快取,之後每次啟動是載入快取啟動圖,所以才會出現修改不生效問題。但我們也並不知道系統會什麼時候更新啟動圖,這個就有點尷尬? stackoverflow上有關於這個問題的討論: iOS Keeping old launch screen and app icon after update
有人說這個不影響線上版本,從上線之後的測試來看,大部分使用者沒有受到影響,但還是出現了部分手機升級卻未更換啟動圖的問題。 因為是系統層面控制,沒有太好的解決方案,如果有人遇到這個情況,需要注意一下。
賦值許可權
在Mac 系統的終端上修改檔案許可權使用的是 Linux 中的 chmod 命令: r:可讀,表示可以讀取內容 w:可寫,表示可以編輯內容,但是不可以刪除檔案 x: 可執行,表示可以執行檔案。
r:4 w:2 x:1
rwx=4+2+1=7
$ chmod 777 file
複製程式碼
這行命令的意思就是:檔案所有者許可權是7,同使用者組的許可權是7,其他非本地使用者組的許可權是7。同理可以出現這樣的命令 chmod740.barshrc
再講兩個: chmod u=rwx, go=rx .barshrc 這個命令中u表示擁有者,g表示group中的使用者,o表示others,和上面的想對應。注意go=rx,這裡go是拼接起來的,表示g和o的使用者有讀和執行的許可權。
$ chmod a+w .barshrc
複製程式碼
表示所有的使用者(a表示all)增加寫的許可權。
App圖片瘦身
隨著專案版本的不斷迭代,會很容易積累越來越多的圖片,對這些圖片我們有兩個主要方面可以優化:
1、刪除不用的圖片
我們需要藉助一個工具LSUnusedResources 它可以檢索專案中未使用的圖片資源,我們可以指定檢索圖片的路徑,字尾進行過濾。 注意:無法區分png序列的引用。最好手動刪除
2、圖片壓縮
可以通過ImageOptim,對圖片進行無失真壓縮。使用時只需將要壓縮的檔案拖到程式中即可。 如果圖片較多時,可以藉助其命令列工具:
/Applications/ImageOptim.app/Contents/MacOS/ImageOptim $file_name
複製程式碼
對應的shell指令碼:
# 處理檔名出現空格問題
MY_IFS=$IFS
IFS=$'\n'
for file_name in $(find "$1" -name "*.png" -type f); do
echo $file_name
/Applications/ImageOptim.app/Contents/MacOS/ImageOptim $file_name
done
IFS=$MY_IFS
複製程式碼
該工具還有一個Sketch外掛:Plugin for Sketch ,可以在輸出icon的時候直接進行壓縮優化。
後臺音訊耗電問題
功能: 一段助眠音訊可以後臺播放,播放完成後如果返回app,會跳到對應的完成介面。
問題: 有使用者反饋,聽音訊睡著了,早上醒來,電量掉了很多(40%)。
調研:
使用Xcode中 Debug Navigator
欄的Energy Debug Gauge
(需真機)測試。播放完成4分鐘左右的後臺耗電狀態如下:
Background
狀態,耗電量也還是存在的。暫時認為問題是客戶端一直處於Background
模式,並未被Suspend
,導致一直被系統維護著,所以一直有耗電情況。
再一次檢視蘋果關於後臺模式的文件:
When the UIBackgroundModes key contains the audio value, the system’s media frameworks automatically prevent the corresponding app from being suspended when it moves to the background. As long as it is playing audio or video content or recording audio content, the app continues to run in the background. However, if recording or playback stops, the system suspends the app.
可知,只要播放器未被銷燬,就會一直佔用後臺模式!
解決方案: 在播放完成時銷燬播放器。
檢驗: 再次觀察播放音訊完成一段時間之後的後臺耗電情況:
此時app被掛起,耗電量基本為0,喚醒app,仍能正常工作。問題解決。推薦閱讀
嘗試分模組整理推薦閱讀的內容
iOS開發過程中的設計模式
設計模式是一套被反覆使用的、多數人知曉的、經過分類編目的、程式碼設計經驗的總結。使用設計模式是為了重用程式碼、讓程式碼更容易被他人理解、保證程式碼可靠性。 毫無疑問,設計模式於己於他人於系統都是多贏的,設計模式使程式碼編制真正工程化,設計模式是軟體工程的基石,如同大廈的一塊塊磚石一樣。專案中合理地運用設計模式可以完美地解決很多問題,每種模式在現實中都有相應的原理來與之對應,每種模式都描述了一個在我們周圍不斷重複發生的問題,以及該問題的核心解決方案,這也是設計模式能被廣泛應用的原因。
以上摘自菜鳥教程
Swift中的策略模式 從一個小例子入手,講解策略模式在swift中的使用。
SwiftGG翻譯組翻譯的設計模式系列文章。
設計模式資料整理 應該是目前總結最全的適合iOS開發的設計模式資料彙總。
iOS逆向
iOS應用逆向工程,是指從目標應用的介面及功能表現入手,使用不同的工具和理論知識去分析其實現原理,得出應用的程式碼結構、整體設計、功能實現、執行流程等,然後利用iOS的系統知識和語言特性,借鑑或修改原有實現流程的技術。
推薦兩篇掘金上關於iOS逆向的文章:
這兩篇都是通過具體例項入手,講解逆向常用的工具和一些逆向的思路,非常適合新手。最好跟著介紹實際操作一番,第一次成功逆向一個專案之後,那種爽歪歪的感覺,你懂的!
另外推薦一位逆向領域的牛人劉培慶(部落格,github),瞭解逆向的同學大多應該都不陌生,iOS方面的逆向優先參照 MonkeyDev。 劉總今年出了新書《iOS應用逆向與安全》,非常適合對逆向有興趣的同學。
利用指令碼提高工作效率
指令碼語言(英語:Scripting language)是為了縮短傳統的“編寫、編譯、連結、執行”(edit-compile-link-run)過程而建立的計算機程式語言。早期的指令碼語言經常被稱為批處理語言或工作控制語言。一個指令碼通常是解釋執行而非編譯。指令碼語言通常都有簡單、易學、易用的特性,目的就是希望能讓程式設計師快速完成程式的編寫工作
文章選自少數派,講述了:
- 什麼是 AppleScript?
- 我使用 AppleScript 的情境
- AppleScript 基礎語法
- AppleScript suite 之外的解法:模擬鍵鼠
非常清晰詳細的AppleScript入門文章。 如何提高工作效率 - 自動化篇 文章選自掘金,串聯Shell Script, Apple Script, Automator, Alfred & WorkFlows,告訴你如果靈活應用,達到利用指令碼提高工作效率的目的。
我寫了一個利用AppleScript和Alfred的WorkFlows在命令列開啟指定路徑的工具。
on run argv
tell application "Finder"
-- get selection path
set pathFile to selection as text
set pathFile to get POSIX path of pathFile
-- fix space problem in the directory
set pathFile to quoted form of pathFile
tell application "Terminal"
activate
tell window 1
do script "cd " & pathFile
end tell
end tell
end tell
end run
複製程式碼
使用方法是:點選選中資料夾,按下熱鍵CMD + T
。
音視訊
創業那點事:聽蓮叔和羊叔回憶崢嶸歲月 蓮叔和羊叔是 SwiftGG 翻譯組的真·大佬。成績好,學歷高,思維縝密,能力很強。聽過《升職加薪》那期節目的朋友應該都有印象。作為標準的技術人才,在創業大潮中自然也想試試身手,打拼一番。
和 Cee 聊聊如何拿 Google Offer 翻譯組裡真是人才輩出啊,前幾天 Cee 在群裡說了個好訊息,他拿到了美國 Google 的 Offer。群友們紛紛表示祝賀並進行了隆重的認哥儀式,將 SwiftGG 誕生以來第一個 GG(哥哥) 稱號頒發給我們公認的大哥 Cee。
以上兩個音訊來自於ggtalk,也是我最近上下班路上用來消遣的音訊節目,牆裂推薦!
電腦科學速成課 由Carrie Anne Philbin主講,Carrie Anne Philbin是一名電腦科學教師和作家。她是樹莓派基金會的教育主管,也是學校(CAS)多樣性和包容組的主席。她為青少年寫了電腦書《樹莓派歷險記》。特意介紹是因為我感覺這個課程因為這個主講人的個人魅力而趣味十足?。不管你是不是計算機專業的學生,看過之後應該都能有所收穫。
Github
12306ForMac
以前要麼開Windows虛擬機器,要麼使用官方Web,現在可以使用12306ForMac訂票助手啦。希望對大家有所幫助!
LongestCocoa
SoWhatIsTheLongestMethodOrConstantNamesInCocoaFramework? (那麼,Cocoa框架中最長的方法名或常量名是什麼?)答案是:
-
outputImageProviderFromBufferWithPixelFormat:pixelsWide:pixelsHigh:baseAddress:bytesPerRow:releaseCallback:releaseContext:colorSpace:shouldColorMatch:
-
kCMSampleBufferConduitNotificationParameter_UpcomingOutputPTSRangeMayOverlapQueuedOutputPTSRange
這個專案有一定的調侃意味,so what? 我選擇swift?