Appleのポリシーだけを残して、Objective-C言語について話してください。 私のプログラムは.a
というライブラリを呼び出しているとします。これにより、.a
のインターネットのをgrepできますか?.a
ではなく、.a
の新しいバージョンを実行しますか?実行時にObjective-Cライブラリを更新することは可能ですか?
ありがとうございました。
Appleのポリシーだけを残して、Objective-C言語について話してください。 私のプログラムは.a
というライブラリを呼び出しているとします。これにより、.a
のインターネットのをgrepできますか?.a
ではなく、.a
の新しいバージョンを実行しますか?実行時にObjective-Cライブラリを更新することは可能ですか?
ありがとうございました。
これは単にiOSのではなく、彼らは、アプリケーションバイナリの一部であるため、プログラムの実行中に(一般的には、おそらく他のUnix)のOS Xアプリケーション(ファイル.A)
静的ライブラリを置き換えることはできません。アプリケーションのバイナリは、プロセスのアドレス空間にマップされます。あなたがその一部を変更しようとすると、ほとんど確実にアプリケーションがクラッシュすることになります。
ダイナミックライブラリ(.soファイル)は、理論上は置き換え可能です。しかし、ほとんどのアプリケーションでは、最初または一度必要なときに一度ロードしてから、アプリケーションのアドレス空間の一部になります。理論的には、アプリケーションがダイナミックライブラリをアンロードすることは理論的には可能だと聞いたことがありますが、実際のCoocaアプリケーションではそれを見たことがありません。
静的にリンクされたライブラリ(.a
)の場合は、少なくともあらゆるレベルの正気とは関係ありません。あなたは確かに動的にロードされたライブラリ(.so
)でそれを行うことができます。それは通常のユースケースの1つです。動的ローダー(https://developer.apple.com/library/mac/#documentation/DeveloperTools/Reference/MachOReference/Reference/reference.html)のdlopen
、dlclose
、dlsym
をご覧ください。
App Storeに登録したい場合は、ダウンロードしたコードを動的に読み込むことはできません。 –
@AlastairStuart真実だが、彼は「ただAppleの方針を残すだけだ」と言った。 –
それを逃した。砂場が殺すかどうか分からない。 –