問題タブ [j2objc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java (J2ObjC) からトランスパイルされた Swift 非 ARC Objective-C クラスからインスタンス化していますが、リークセーフですか?
プロジェクトに J2ObjC を使用しています。私はすべてをセットアップし、Java クラスを含めました。
唯一の注意点は、ARC を無効にする必要があったことです。そうしないと、Java コードベースがトランスパイル/コンパイルされないためです。(J2ObjC 自体は arc を無効にすることをお勧めします)
生成されたファイルのみを無効にすることはできなかったので、Project Inspector -> Target -> Build Settings -> Apple LLVM 8.0 - Language - Objective C -> Objective-C Automatic Reference Counting (No )
次に、Swift で ViewController を作成し、Java からトランスパイルされたクラス (ブリッジ ヘッダーに含まれる生成された .h ファイルのヘッダー) を問題なくインスタンス化しました。 ARC のない VC。
これは正常/漏れ防止ですか? リークセーフとは、トランスパイルされたクラスオブジェクトをインスタンス化すると、参照カウントが減少した後、通常の ARC として自動的に割り当てが解除されることを意味します (Swift で ARC を無効にできないことはわかっています)。
Java クラスの参照循環に気をつけなければならないことはわかっていますが、それはリークセーフという意味ではありません。
ios - J2OBJC_HOME が Settings.xcconfig で正しく定義されていない
Xcode プロジェクトに *.jar ファイルを含める必要があるため、j2objc を使用してそれらを Objective C に変換することにしました。プロジェクトを構成しようとしてもうまくいかなかったので、こことここからサンプル プロジェクトをダウンロードしました。同じエラーのため、それらのすべてがコンパイルできません
J2OBJC_HOME が Settings.xcconfig で正しく定義されておらず、現在は「../j2objc-dist」に設定されています コマンド /bin/sh が終了コード 1 で失敗しました
間違ったパスを使用しているようです。これは私の Settings.xcconfig です
J2OBJC_HOME = ${HOME}/j2objc;
HEADER_SEARCH_PATHS = "${J2OBJC_HOME}/frameworks/JRE.framework/Headers"; FRAMEWORK_SEARCH_PATHS = "${J2OBJC_HOME}/frameworks";
さまざまなパスを試しましたが、成功しませんでした この時点での j2objc フォルダーのパスは :/Users/username/j2objc です。
アドバイスをありがとう