OSXでのプラグイン作成時のすごくニッチな注意点となります。
結論から書くと
「NSPrincipalClassでは"-"は使えないので"_"を使え!!」
です。
以下例。
プラグインをロードし、使うためには
test.swift
if let bundle = Bundle.init(url: "プラグインのURL") {
if let cls = bundle.principalClass as? NSObject.Type, let plugin = cls.init() as? PluginInterface {
// ここで plugin を使ってなんやかんやする
}
}
というようなソースになります。
bundle.principalClassに、プラグインとして期待するクラスが格納されている前提ですね。
で、この期待されるクラスを取得するためにはプラグイン側のソースのInfo.plistにて、
Info.plist
Principal class プラグインクラス
という表記をする必要があります。XMLで表記するとこんな感じ。
<key>NSPrincipalClass</key>
<string>final-fantasy.pluginMain</string>
ここで、final-fantasyはそのプラグインバンドル名になるのですが、
この表記だと、bundle.principalClassで、思った通りのpluginMainクラスが取得できません。
正解は
NSPrincipalClass
final_fantasy.pluginMain
というように "-" ではなく "_" を使用する必要があります。
appIDなどでは普通に"-"が使えるのに、ここでは"-"を使うと全く通用しないようで、
マニュアル等にも記載が見つからなかったため地味にハマることもあるのではないかとおもい、ここに記させていただきました。
参考リンク
xcodeのプラグインを作る方