iOS開發月報#10|201904

這裏記錄過去一個月,我看到的值得分享的內容,包含但不限於iOS知識,每個月的最後一天發佈。 歡迎推薦內容,可以前往zhangferry/iOSMonthlyReport提交issue。

Tips

關於分享中的一些問題

微博

  • 多媒體內容的縮略圖,即thumbnialData的大小應小於32K。否則會導致分享失敗
  • 微博分享的AppStore下載鏈接無法打開,這是因爲微博屏蔽了指向AppStore的鏈接。一個可行的做法的將微博的下載鏈接增加一個引導頁,提醒用戶通過Safari打開。

微信

  • 多媒體縮略圖不能超過64K。
  • 微信分享從6.7.2之後無法獲知是否真的分享成功。這個是官方的調整,旨在減少“強制分享至不同羣”等濫用分享能力。

facebook

關於facebook分享的採坑可以查看這篇文章,基本也都是我遇到的問題。iOS Facebook 分享中的坑

Twitter

相同內容分享兩次之後再分享將失敗。

SWIFT_VERSION '5.0' is unsupported, supported versions are: 3.0, 4.0, 4.2. (in target 'SwiftyJSON’)

這個問題是多人寫作開發引起的,有一個同事將SwiftJSON的版本升級至4.3.0,使其支持Swift5.0,但是Swift5.0跟Swift4.0+不兼容,導致出現上面的錯誤提示。

修復方式,手動指定SwiftJSON版本,使其低於或者等於4.2.0。

pod 'SwiftyJSON', '~> 4.2.0'
複製代碼

Encountered an unknown error (Unable to find a specification for FrameworkA depended upon by FrameworkB

FrameworkAFrameworkB都是私有的Cocoapods庫,在製作FrameworkA時引用了FrameworkB,如果執行pod spec lint就會出現如上的提示,到時lint無法通過。

這是因爲lint在對引用庫驗證時,默認只驗證官網的倉庫,我們需要手動添加驗證源才能通過,方法是:

pod spec lint --sources=git@bitbucket.org:company/privateRepo.git,https://github.com/CocoaPods/Specs --allow-warnings
複製代碼

Tabbar的初始化會立即調用viewDidLoad方法

正常當我們初始一個UIViewController的時候,總是先執行init方法,執行完之後纔會調用viewDidLoad方法。但是如果是UITabbarViewController的初始化則不同,它會在執行init方法的時候立即調用viewDidLoad

來自Stack Overflow的解釋:

UITabBarControllers call loadView inside [super init] method, which causes the call to viewDidLoad. So the viewDidLoad method will be called before init has finished its job.

If you have some thing to setup in viewDidLoad you should perhaps do it inside init method after the call to [super init].
複製代碼

AppleScript打印換行

當我使用AppleScript編輯一段腳本時,有一個需求是打印一段換行的文本,試了很多方案,包括\n,\r, ASCII碼等都不行,腳本執行時會忽略\符合自動換行,分開執行輸入內容。

最後在不斷嘗試中找到了一種方案,直接敲出換行,如下,在變量_input後拼接一個換行符:

tell note1 to append text "[*]" & _input & "
"
複製代碼

由於第三方SDK使用了用於定位的功能,導致收到蘋果的隱私警告郵件

後來定位的到的原因是Facebook相關的幾個庫均使用了CoreLocation,也就是說Facebook有偷偷使用用戶地理位置權限的嫌疑。當然聯繫他們提供不帶此功能的SDK也不顯示,後來在react的issuse中也發現了對於此問題的討論。#20879

解決方案如下,即增加對應的隱私條款選項:

違反Guideline2.3.1被打回

在一次小版本提交時,遇到了這個違反Guideline2.3.1被打回的問題,也是第一次遇到。原因描述是含有模糊代碼,選擇器錯誤或者誤導審覈的功能。實際排查中我們並未猜想到哪裏可能導致這些問題。

後來通過郵件跟審覈人員溝通,得到如下回復:

問題又好了?猜想可能是蘋果審覈的問題,他們也是會犯錯誤的。

後來在網上查過這種問題的處理情況,從資料時間來看,可以確定這個是最近一年纔出現過的問題。處理方法是,首先是應該跟審覈人員聯繫,讓他們告知是哪裏的問題;然後再根據情況進行修改。

推薦閱讀

作爲面試官,哪類 iOS 開發更容易被你青睞?

來自老司機團隊的文章,正在找工作的你肯定能從中有所收穫。

再貼一個我司的招聘信息,有意願的小夥伴趕緊簡歷投過來。

用戶端智能的應用實踐

bang寫的關於應用功能優化的幾個點,根據用戶的特徵推薦金額,根據用戶使用習慣調整push的時間,有些方案不一定能夠爲我們所用但是解決問題的思路還是挺不錯的。

談Linux,Windows,和Mac

王垠的博客其實已經被刪除了,這個是網絡留存的快照文件。牛B的人總是能留下牛B的話,這是王垠關於Linux、Windows和Mac的看法。

Swift語言的設計錯誤

let shoppingList = ["Eggs", "Milk"]
//這麼寫應不應該報錯?
shoppingList[0] = "Salad"
複製代碼

關於以上問題的討論。當前Swift是不允許對let生命的數字修改內部元素的。在王垠看來這是一個低級的錯誤,具體爲什麼這麼定義“不對”,可以看文章討論。

音視頻

Github

iOS-Source-Probe

iOS源碼探求系列,是iOS相關源碼的分析合集。

AutoInch

優雅的iPhone全尺寸/等比例精準適配工具,可以通過設置一個屏幕的尺寸值,而自動配置其他尺寸值。支持代碼和xib兩種方式。

SwiftTips

作者總結的Swift使用中的一些小技巧,和喵神的《100 個 Swift 必備 tips》有異曲同工之妙。作爲一名剛入門的Swifter,這兩個資料都是非常推薦看一看的。

ZFPlayer

非常全面的一款iOS播放器,支持AVPlayer和ijkplayer兩種播放模塊。項目包含主流的視頻播放場景,抖音、微博短視頻等樣式。如果是對視頻功能有需求的小夥伴非常建議看一看。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章