2011-11-01 8 views
8

私は現在、私の個人的なニーズのための小さなフレームワークに取り組んでいる、タイトルはかなりよく私の質問を説明すると思うし、ARCでそれを構築することについて考え(ザッツ可能であればすべてで?)、とした古いプロジェクトで使用しますARCの前に建てられた?私はARCフレームワークを構築し、それを非ARCプロジェクトで使用できますか?

答えて

7

はい、。 ARCを使用して構築されたアプリケーションの場合、これはアプリケーションとともにパッケージ化されています。これは、非ARCアプリケーションでARCコンパイルされたライブラリを使用している場合は含まれません。

このライブラリを非ARCアプリケーションに手動でリンクすると、古いOSバージョンで実行時の問題が発生するのを避けることができます。アプリケーションのOther Linker Flagsに-fobjc-arcを追加します。

はこの上でいくつかのより多くの議論のためのthis Apple Developer Forums threadを参照してください。

+0

私は実際にプロジェクトでこれを試してみましたが、それは助けにはなりませんでした。 http://stackoverflow.com/questions/8375233/ld-duplicate-symbol-objc-retainedobject-on-ios-4-3-but-not-on-ios-5-0 –

+0

なぜ任意の実行時に問題があるはず? ARCはコンパイル時にそれをやっていませんか? –

+0

@ZakyGerman - ARCは正しいポイントに '-retain'と' -release'を単に注入するだけではなく、新しい '@ autoreleasepool'のようなものを導入しています。これはiOS 5.0に組み込まれていますが、4.xではこの後方互換性ライブラリが必要です。 –

1

大丈夫でしょうか。ライブラリは既にコンパイルされているので、ARC/NonARCはそれ以上重要ではありません。あなたはデプロイメント・ターゲットとしてのiOS 4.xを持っている場合は、補足的なライブラリが古いランタイム上のARC-コンパイルされたコードに対処する必要がある:1つの注意点が

+1

古いランタイムとARCが有効になっている静的ライブラリに潜在的な問題が1つあります。 –

2

(ブラッドは、上記の彼の答えで述べたように)あなたは、アップルが提供するグルー・ライブラリをリンクすることができます。しかし、__weak変数修飾子は4.3以下のオペレーティングシステムと互換性がありません(sudoのコメントのiOS 5 Best Practice (Release/retain?))。

関連する問題