2012-04-20 18 views
0

Appleのポリシーだけを残して、Objective-C言語について話してください。 私のプログラムは.aというライブラリを呼び出しているとします。これにより、.aのインターネットのをgrepできますか?.aではなく、.aの新しいバージョンを実行しますか?実行時にObjective-Cライブラリを更新することは可能ですか?

ありがとうございました。

答えて

0

これは単にiOSのではなく、彼らは、アプリケーションバイナリの一部であるため、プログラムの実行中に(一般的には、おそらく他のUnix)のOS Xアプリケーション(ファイル.A)

静的ライブラリを置き換えることはできません。アプリケーションのバイナリは、プロセスのアドレス空間にマップされます。あなたがその一部を変更しようとすると、ほとんど確実にアプリケーションがクラッシュすることになります。

ダイナミックライブラリ(.soファイル)は、理論上は置き換え可能です。しかし、ほとんどのアプリケーションでは、最初または一度必要なときに一度ロードしてから、アプリケーションのアドレス空間の一部になります。理論的には、アプリケーションがダイナミックライブラリをアンロードすることは理論的には可能だと聞いたことがありますが、実際のCoocaアプリケーションではそれを見たことがありません。

2

静的にリンクされたライブラリ(.a)の場合は、少なくともあらゆるレベルの正気とは関係ありません。あなたは確かに動的にロードされたライブラリ(.so)でそれを行うことができます。それは通常のユースケースの1つです。動的ローダー(https://developer.apple.com/library/mac/#documentation/DeveloperTools/Reference/MachOReference/Reference/reference.html)のdlopendlclosedlsymをご覧ください。

+0

App Storeに登録したい場合は、ダウンロードしたコードを動的に読み込むことはできません。 –

+1

@AlastairStuart真実だが、彼は「ただAppleの方針を残すだけだ」と言った。 –

+0

それを逃した。砂場が殺すかどうか分からない。 –

関連する問題