插件开发
插件的简介
- Xcode插件,必须是与Xcode是同一个级别的应用,也就是必须也是mac OS APP
- 改变Xcode常规的操作被称为插件
- Xcode著名的插件文档注释,颜色提示,图片选择等等...
插件的开发步骤
- 需要配置项目中的pist文件
- 需要修改和添加plist文件只中的多处
- 操作繁琐,步骤麻烦
- 这时候,有一个专门用来开发插件的插件Xcode Plugin
插件
- 在新建项目中的OS X中多了一个Xcode Plugin模板
- 选择模板中的Xcode Plugin进行开发
模板分析
- (id)initWithBundle:(NSBundle *)plugin
{
if (self = [super init]) {
// reference to plugin's bundle, for resource access
// 应用插件的资源包,用于资源访问
// 在NSObject_Extension中初始化的时候设置
self.bundle = plugin;
// 发送Xcode程序启动的通知
// 调用didApplicationFinishLaunchingNotification方法
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didApplicationFinishLaunchingNotification:)
name:NSApplicationDidFinishLaunchingNotification
object:nil];
}
return self;
}
- 获取到启动Xcode的通知调用
/**
* 当Xcode启动的时候调用
*
*/
- (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]];
// 创建一个菜单项目
// 设置菜单项目的点击事件
NSMenuItem *actionMenuItem = [[NSMenuItem alloc] initWithTitle:@"Do Action" action:@selector(doMenuAction:) keyEquivalent:@""];
// 将事件交给当前类处理
[actionMenuItem setTarget:self];
// 添加子标题
[[menuItem submenu] addItem:actionMenuItem];
}
}
- 点击菜单上的Edit中的Do Action按钮调用
// 弹出弹框
- (void)doMenuAction:(NSMenuItem *)item
{
NSLog(@"=====%@ item = %@",item.keyEquivalent,item);
NSAlert *alert = [[NSAlert alloc] init];
[alert setMessageText:[NSString stringWithFormat:@"Hello, World%@",item.keyEquivalent]];
[alert runModal];
}
满地打滚卖萌求赞,如果本文帮助到你,轻点下方的红心,给作者君增加更新的动力。