LoginSignup
1
0

More than 5 years have passed since last update.

OSXでのプラグイン作成時のニッチな注意点

Posted at

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のプラグインを作る方

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0