插件開(kāi)發(fā)
插件的簡(jiǎn)介
- Xcode插件,必須是與Xcode是同一個(gè)級(jí)別的應(yīng)用,也就是必須也是mac OS APP
- 改變Xcode常規(guī)的操作被稱為插件
- Xcode著名的插件文檔注釋,顏色提示,圖片選擇等等...
插件的開(kāi)發(fā)步驟
- 需要配置項(xiàng)目中的pist文件
- 需要修改和添加plist文件只中的多處
- 操作繁瑣,步驟麻煩
- 這時(shí)候,有一個(gè)專門(mén)用來(lái)開(kāi)發(fā)插件的插件Xcode Plugin
插件
- 在新建項(xiàng)目中的OS X中多了一個(gè)Xcode Plugin模板
- 選擇模板中的Xcode Plugin進(jìn)行開(kāi)發(fā)
模板分析
- (id)initWithBundle:(NSBundle *)plugin
{
if (self = [super init]) {
// reference to plugin's bundle, for resource access
// 應(yīng)用插件的資源包,用于資源訪問(wèn)
// 在NSObject_Extension中初始化的時(shí)候設(shè)置
self.bundle = plugin;
// 發(fā)送Xcode程序啟動(dòng)的通知
// 調(diào)用didApplicationFinishLaunchingNotification方法
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didApplicationFinishLaunchingNotification:)
name:NSApplicationDidFinishLaunchingNotification
object:nil];
}
return self;
}
- 獲取到啟動(dòng)Xcode的通知調(diào)用
/**
* 當(dāng)Xcode啟動(dòng)的時(shí)候調(diào)用
*
*/
- (void)didApplicationFinishLaunchingNotification:(NSNotification*)noti
{
// 接收到通知后移除通知
[[NSNotificationCenter defaultCenter] removeObserver:self name:NSApplicationDidFinishLaunchingNotification object:nil];
// 獲取到Edit菜單
NSMenuItem *menuItem = [[NSApp mainMenu] itemWithTitle:@"Edit"];
if (menuItem) {
// 添加一條分割線
[[menuItem submenu] addItem:[NSMenuItem separatorItem]];
// 創(chuàng)建一個(gè)菜單項(xiàng)目
// 設(shè)置菜單項(xiàng)目的點(diǎn)擊事件
NSMenuItem *actionMenuItem = [[NSMenuItem alloc] initWithTitle:@"Do Action" action:@selector(doMenuAction:) keyEquivalent:@""];
// 將事件交給當(dāng)前類處理
[actionMenuItem setTarget:self];
// 添加子標(biāo)題
[[menuItem submenu] addItem:actionMenuItem];
}
}
- 點(diǎn)擊菜單上的Edit中的Do Action按鈕調(diào)用
// 彈出彈框
- (void)doMenuAction:(NSMenuItem *)item
{
NSLog(@"=====%@ item = %@",item.keyEquivalent,item);
NSAlert *alert = [[NSAlert alloc] init];
[alert setMessageText:[NSString stringWithFormat:@"Hello, World%@",item.keyEquivalent]];
[alert runModal];
}
滿地打滾賣(mài)萌求贊,如果本文幫助到你,輕點(diǎn)下方的紅心,給作者君增加更新的動(dòng)力。