Cocoa-创建iTunes插件

1. 首先,创建一个Bundle工程



2. 新建一个类,作为iTunes调用插件的入口

例如,我新建了一个叫PluginController的类


3. 新建一个Window.xib和DemoWindowController类用来展示插件是否被调用起来了



4. 代码实现

DemoWindowController.m 仅实现了init方法
- (id)init
{
    self = [super initWithWindowNibName:@"Window" owner:self];
    if (self) {
        // Initialization code here.
    }
    
    return self;
}


PluginController.m 定义了两个静态方法initialize()和finalizer(),分别在iTunes启动和退出时被调用。iTunes是怎么去找插件的入口和出口呢? 关键就在__attribute__ ((constructor)) 和 __attribute__ ((destructor)) 这两个GCC编译器扩展 。initialize()主要目的是弹出示例窗口,这样我们就知道插件有没有被调用起来。finalizer()方法是用来iTunes退出时关闭示例窗口,释放资源。

#import "PluginController.h"
#import "DemoWindowController.h"

@implementation PluginController

@end

static DemoWindowController *windowController;

//__attribute__  这个关键字是GCC 编译器对标准的扩展,它用来修饰函数属性,变量属性,类型属性
//__attribute__ ((constructor)) 所修饰的方法会在 main() 之前执行
//iTunes启动后执行这个方法
__attribute__ ((constructor))
static void initialize(){
    NSLog(@"Start");
    windowController = [[DemoWindowController alloc] init];
    [windowController.window makeKeyAndOrderFront:nil];
}

//__attribute__ ((destructor)) 所修饰的方法会在main()执行结束之后执行
//iTunes退出后执行这个方法
__attribute__ ((destructor))
static void finalizer() {
    [windowController.window close];
    [windowController release];
}

5. 添加PkgInfo文件

做完上面所述步骤后,编译生成Bundle文件放入iTunes插件目录(下面会做介绍),启动iTunes发现根本文法启动。比较下别人做的iTunes插件,发现Bundle的Contents目录下有一个PkgInfo文件,而我编译出的Bundle文件没有,所以我就把那个PkgInfo拷过来试试,居然成功了。各位可以从我下面放的源码中找到这个文件。


添加的资源文件会默认放在Resources目录下,但是我们需要放在Contents目录下,所以还需要做点配置。 请注意看下面的Subpath,我用两个点(..),就是表示Resources目录的上层目录(Contents目录)。


编译后,打开Bundle的内容,可以看到Contents目录下有Pkginfo文件了。


6. 拷贝编译后的Bundle放在iTunes插件目录下

在终端执行命令:  open ~/Library/iTunes/iTunes\ Plug-ins/   打开iTunes插件目录,将生成的bundle(即iTunesPluginDemo.bundle)文件拷贝到这个目录下。
然后,打开iTunes,会发现示例窗口跟着弹出来了,退出iTunes,示例窗口也会随之关闭。

最后,奉上所有源码:  iTunesPluginDemo.zip


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值