玩轉iOS開發:iOS 10 新特性《Xcode Extension》

CainLuo發表於2019-02-13

文章分享至我的個人技術部落格: https://cainluo.github.io/14972357977664.html


Xcode Extension

macOS, watchOS, tvOS, iOS開發, 最離不開的工具就是Xcode, 但Xcode真的讓我們又愛又恨, 雖然有很多強大的功能, 但細節方面真的很難Care到, 於是乎Alcatraz誕生了, 在當時火的不要不要的, 只要是老司機都會裝一個.

但現在蘋果爸爸貌似看到了開發者的需求, 所以現在給Xcode加了一個功能, 就是Xcode Extension.

嚴格來說這不是iOS的東西, 但又剛剛好是隨著iOS 10一起出來的, 想了想, 還是集合在這裡吧.


建立專案

這裡我們需要建立的是macOS的專案:

1

然後在專案的General裡找到新增Extension的選項:

2

選擇Xcode Editor Extension:

3

這就是Xcode Extension啦:

4

順便說說, 我在這個info.plist改了一下引數:

5

注意

這裡有一個小坑, 注意要給我們Xcode Extension申請一個證書, 兩邊都要申請哦.

6
7

不然就會報-67050錯誤:

IDESourceEditorExtension: Xcode Source Editor Extension does not meet code signing requirement: me.ocean.XcodeExt.XcodeExtTest ((null)), Error Domain=DVTSecErrorDomain Code=-67050 "code failed to satisfy specified code requirement(s)" UserInfo={NSLocalizedDescription=code failed to satisfy specified code requirement(s)}
複製程式碼

這裡還有一個詭異的錯誤程式碼4097, 但我clean了一下工程之後就消失了, 大家注意注意.

Hub connection error Error Domain=NSCocoaErrorDomain Code=4097
複製程式碼

程式碼程式碼!!!

這裡我就隨手寫兩句程式碼好了, Xcode的擴充套件還是靠各位大神去發揮想象, 我以後再摻和咯.

    XCSourceTextBuffer *textBuffer = invocation.buffer;
    XCSourceTextRange *insertPointRange = textBuffer.selections[0];
    
    NSInteger startLine = insertPointRange.start.line;
    
    [textBuffer.lines insertObject:@"這是什麼鬼?" atIndex:startLine];
複製程式碼

執行

一切就緒之後, 我們就執行, 然後選擇為Xcode新增外掛:

8

等待執行完成之後, 會彈出一個灰色的Xcode:

9

這時不用理會, 我們回到正常的Xcode, 然後找到Editor, 點選它, 我們就會發現外掛在這裡啦:

10

但這裡多說一句, 當我們停止執行之後, 外掛又會不見了的, 這個需要大家自行去打包然後釋出出來~~這裡就不多說了, 詳細大家去參考XAlign


工程地址

專案地址: https://github.com/CainRun/iOS-10-Characteristic/tree/master/3.Xcode%20Extensions


最後

碼字很費腦, 看官賞點飯錢可好
微信
支付寶

相關文章