AppKitの各APIはMac Catalyst製macOSアプリで使用できるのか

そもそも「Mac Catalystで作ったmacOSアプリ」という表現が間違っているのかもしれない。「iPadアプリがMac CatalystによってmacOS上でも動く」とかの方がいいのかも。とにかく見た目が完全にmacOSアプリっぽいので表題のことが当初はなんとなくできるのではと思っていたが全然違った。使えるAPIもあるが、ほとんどのCocoa/AppKitのAPIはMac Catalyst製アプリでは使えない

利用可否の判別方法

ドキュメントを見ると、「SDKs」のところに、「macOS 10.x+」とは別に、「Mac Catalyst 1x.x+」と記載されているクラスがある。これらはMac Catalystで使える。

画像1

ここでNSViewを見てみると・・・

画像2

macOSのみ。つまりMac Catalystでは使えない。

NSView, NSWindowが使えないのでUIコンポーネント系クラスは基本的に全部使えない

NSApplication, NSRunningApplication, NSMenu, NSMenuItem, NSStatusItem, NSWorkspace, etc...も使えない。

使おうとするとどうなるのか?

#if targetEnvironment(macCatalyst)
import AppKit
#endif

これはOK。AppKit自体はMac Catalyst 13.0+サポートしているなので。

画像3

以下のようにMac CatalystでサポートしてないAppKitクラスを使おうとすると・・・

#if targetEnvironment(macCatalyst)
    let openPanel = NSOpenPanel()
    ...
#endif

以下のようなエラーになる。

'NSOpenPanel' is unavailable in Mac Catalyst

ではmacOSアプリのあの機能やこの機能はどう実装するのか?

ここから先は

361字
文章やサンプルコードは多少荒削りかもしれませんが、ブログや書籍にはまだ書いていないことを日々大量に載せています。たったの400円で、すぐに購読解除してもその月は過去記事もさかのぼって読めるので、少しでも気になる内容がある方にはオトクかと思います。

技術的なメモやサンプルコード、思いついたアイデア、考えたこと、お金の話等々、頭をよぎった諸々を気軽に垂れ流しています。

最後まで読んでいただきありがとうございます!もし参考になる部分があれば、スキを押していただけると励みになります。 Twitterもフォローしていただけたら嬉しいです。 https://twitter.com/shu223/