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で使える。
ここでNSViewを見てみると・・・
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+サポートしているなので。
以下のようにMac CatalystでサポートしてないAppKitクラスを使おうとすると・・・
#if targetEnvironment(macCatalyst)
let openPanel = NSOpenPanel()
...
#endif
以下のようなエラーになる。
'NSOpenPanel' is unavailable in Mac Catalyst
ではmacOSアプリのあの機能やこの機能はどう実装するのか?
最後まで読んでいただきありがとうございます!もし参考になる部分があれば、スキを押していただけると励みになります。 Twitterもフォローしていただけたら嬉しいです。 https://twitter.com/shu223/