Paintcodeで生成されたコードを使用してsvgマップを描画しようとしています。シミュレーターを使用して実行すると、コードは正常に機能します。しかし、デバイス(iPad)で実行すると、drawCanvas
メソッドでクラッシュし、
警告:Objective-Cクラス情報をロードできませんでした。これにより、使用可能なタイプ情報の品質が大幅に低下します。
警告スクリーンショット
私はストーリーボードにマップを描画しています。ビューにはスクロールビューがあり、その中に1つの画像ビューがあります。 StyleKitClass
オブジェクトを1つ追加しました(StyleKitClass
はPaintCodeアプリを使用して生成されたNSObject
クラスです)。これをIBOutletコレクションを介してimageView
に接続しました。
コンセント接続
誰かが知っている場合は、解決策を教えてください。
私はPixelCutで働いており、PaintCodeを作成しています。
プロジェクトを送っていただいた後、iPhone 5sで実行することでこの問題を確認できました。不幸にも、あなたはPaintCode、Xcode およびiOSを53千コード行で描画メソッドを使用しようとすることにより、それらの機能の限界まで押し上げています。この単一のメソッドは、バイナリで9 MB必要です(arm64のみ、-Onone
)とポインタ型のほぼ1000の変数を使用します。アプリがスタックメモリサイズの制限に達し、システムによって終了されたと推測します。
これまでに1万行を超えるStyleKitsを見てきましたが、どれも単一のメソッドこれほど大きいものはありませんでした。描画をいくつかのキャンバスに分割し、シンボルを使用してそれらを合成することをお勧めしますが、そのような巨大な描画での作業は非常に遅くなる可能性があります。
最近私に起こったのは、ViewController.Swiftのコードでファイル名を誤って入力したことです。
@objc
使用する関数の前に、次のように:
@objc func myFunction() {
Objective Cの相互運用性について詳しくは、こちらをご覧ください https://developer.Apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithObjective-CAPIs.html