@private キーワードを使用して、インスタンス変数をプライベートに宣言できることを知っています。これは、コンパイル時にのみ適用されると思います。
実行時に他のユーザーが私のプライベート変数にアクセスできないようにする方法を知っていますか?
私は他の開発者に配布される静的ライブラリを構築していて、彼らに私のプライベート変数にアクセスさせたくないので、これを求めています。
@private キーワードを使用して、インスタンス変数をプライベートに宣言できることを知っています。これは、コンパイル時にのみ適用されると思います。
実行時に他のユーザーが私のプライベート変数にアクセスできないようにする方法を知っていますか?
私は他の開発者に配布される静的ライブラリを構築していて、彼らに私のプライベート変数にアクセスさせたくないので、これを求めています。
決心した人が実行時にデータをいじるのを防ぐことはできません (メモリ内のオブジェクトのアドレスを知っていて、それが現在のプロセスによって自由に書き込み可能な割り当てられたスペースにある場合は、常にそれを変更する方法があります)。おそらくできる最善の方法は、それを難読化することです。たとえば、 a のみを表示しvoid*
、メモリを別の場所に割り当ててキャストします。
(パブリック).hファイルで@privateを使用する代わりに、.mファイルのクラス拡張子でインスタンス変数を宣言できます。@KevinGrantが正しく言ったように、これによって決定された人がそれにアクセスすることも妨げられませんが、少なくとも他の人は宣言を見ることができません(そしてデバッガーはそれを表示しないと思います)。
追加:そのトピックに関する議論については、例えば、 ObjectiveC-iVarsを非表示にするを参照してください。
実行時にプライベート変数への他のアクセスを防ぐことはできないと思います。他の人が KVC と KVO を使用してプライベート変数を取得および変更できるためです。たぶん、あなたのプライベート変数の間に多くの関係を作ることができます.他の人がそれを変更すると、彼らは間違った答えを得るでしょう.多分それは他の人があなたのプライベート変数を変更するのを防ぐことができます.