之前有一個(gè)項(xiàng)目采用的是 MRR盾计,今天在將其轉(zhuǎn) ARC 時(shí)有一個(gè)小問題缕棵,就是 Xcode 提示 dispatch_semaphore_t
要使用 strong
這個(gè) property attribute 去修飾,而我使用的是 assign
总寒。
出現(xiàn)這個(gè)提示的原因是 dispatch_semaphore_t 在 iOS 6.0 之后糕簿,被直接作為 Objc 對象并可交由 ARC 管理。所以簡單的按照提示將項(xiàng)目中的幾處 assign
改為 strong
就可以了埃唯,改完之后 analyze 下沒有問題。
隨后鹰晨,我在另一對其有依賴的項(xiàng)目中使用 pod update
墨叛,出現(xiàn)這樣的錯(cuò)誤提示:
dispatch_semaphore_t Property with 'retain (or strong)' attribute must be of object type
看看提示的內(nèi)容,這不是在逗我模蜡?剛告訴我 dispatch_semaphore_t 可以作為 Objc 對象由 ARC 管理漠趁,現(xiàn)在又提示我它不是對象,不能使用 strong
修飾忍疾?當(dāng)前的項(xiàng)目是 iOS 9.0 好嗎闯传!
正當(dāng)我覺得自己踩了屎的時(shí)候,突然想到是不是 pods 的問題卤妒,于是 google 下發(fā)現(xiàn)有類似的搜索結(jié)果甥绿,點(diǎn)了幾步發(fā)現(xiàn)原來是這樣:
需要改下項(xiàng)目中的 podspec。對于這種 corner case 而言则披,pods 應(yīng)該給出提示的好嗎共缕,明明有相應(yīng)的選項(xiàng)了,再提示下不行嗎 orz...
另外舉一反三一下士复,似乎目前的 Dispatch objects 都是 Objc 對象并可又 ARC 管理了图谷,見:What property should I use for a Dispatch Queue after ARC?
希望可以幫到遇到類似問題的朋友吧 :)