問題タブ [ivar]

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.

0 投票する
2 に答える
2186 参照

objective-c - IBOutlets は ivar またはプロパティにする必要がありますか?

それらが存在することは確かですが、ViewControllerでアウトレットを宣言するための公式のベストプラクティスを見つけたり、特定したりするのは困難です。

私が見る限り、3つのオプションがあります:

  1. イヴァルのみ
  2. プロパティのみ
  3. Ivar で裏付けられたプロパティ

現在、IB から ViewController にドラッグしてプロパティを自動生成しようとすると、Xcode がクラッシュしますが、私が覚えている限りでは、そうすると ivar なしでプロパティが作成されます。ivar セクションにドラッグすることもできます。これにより、プロパティのない ivar が作成されます。これは、プロパティのみのアウトレットと ivar のみのアウトレットの両方が Apple で問題ないことを示唆しています。

したがって、viewDidUnload では、アウトレットのいずれかに nil を割り当てる必要がありますが、dealloc はどうでしょうか。ivar なしでプロパティを使用した場合、init または dealloc でアクセサーを使用することを想定していない場合、アウトレットを解放するにはどうすればよいでしょうか?

アクセサーなしでアウトレットを解放できる唯一のパターンは、ivar に裏打ちされたプロパティを使用することであるように私には思えます。そのため、アクセサーを使用せずに dealloc で ivar を手動で解放できますが、これは Apple の 1 つのオプションです。コード生成はサポートしていません。

0 投票する
1 に答える
102 参照

getter - 目標 C: Getter メソッドと Class.ivarName

ファイル間で変数にアクセスする方法について、私はかなり混乱しています。

例えば:

Apple、Fruit、Eatの3つのファイルがあります

フルーツ.h

フルーツ.m

Apple.h

Apple.m

// 私の Eat.h は必要ないと思うので実質的に空です

Eat.m

これらは例としてゼロから書きました。したがって、セミコロンの欠落などのばかげた構文エラーや、私が見逃した明らかなエラーは無視してください。私はちょうど私が苦労しているものを反映しています。

私の混乱は、Apple.m では、ピリオド記号 (.) を使用して Fruit の名前 ivar にアクセスできることだと思います。しかし、Eat.m では、apple の名前 ivar に (.) でアクセスできません。getter メソッドを作成する必要がある/作成できることはわかっていますが、複数のファイルにまたがる方法で変数に直接アクセスする方法はありますか? おそらく悪いプログラミング手法であることは知っていますが(それが可能であれば)、なぜ機能が同じでないのか混乱しています。

0 投票する
2 に答える
5342 参照

objective-c - ARC では、ivar に直接割り当てられた場合、ブロックは自動的にコピーされますか?

ARC の下で次のコードを想定します。

質問: ivar に割り当てられると、ブロックは自動的にヒープにコピーされますか?

私の以前の質問は、 を介して割り当てられたときにコピーされることを暗示していました@property。しかし、今日、私は上記のコードを使用し、にEXC_BAD_ACCESS変更することで修正されたを受け取りました

_ivarResponseHandler = [responseHandler copy].

0 投票する
3 に答える
5260 参照

cocoa - 合成されたプロパティと ivar エラー

「デバッグ X86-64」モード (Xcode 3.6) でプログラムをビルドしてきましたが、すべて問題なく動作します。ただし、「Release X86-64」モードに切り替えようとしたところ、コンパイル時に各プロパティに対して次のエラーが発生しました。

ここで、'x' は私のプロパティの 1 つで、最初は 'company' です (このタイプのエラーを 51 件受け取りました)。私の .h インターフェイス ファイルでは、次のように項目をリストしました。

私の .M 実装ファイルでは、次のように合成しました。

私の理解では、インスタンス変数はこれらのプロパティに対して自動的に作成されます...実際、「リリース」モードでコンパイルしようとするまで、それらは完全に機能しているようです。

これを説明しなければならない本には何も見つかりませんでした。私は何か間違ったことをしていますか、より具体的には、「リリース」コンパイルのためにこれを修正するには何を含める必要がありますか?

ありがとう!

0 投票する
3 に答える
273 参照

objective-c - ARCはObjective-Cのプロパティの必要性を排除しませんか?

重複の可能性:
ARCで@propertiesを使用する理由は何ですか?

NB:私は実際に私たちがプロパティを廃止できるとは思いませんが、私はなぜそうしないのかについての理由を理解しようとしています。:)

この質問に戻ると、プロパティを使用する主な理由は、メモリ管理の問題を回避するためのようです。つまり、プロパティを作成することで、これらすべての保持メソッドと解放メソッドを書き出す必要がなくなります。

ARCは現在これを処理しているので、プロパティをすべて一緒に廃止して、次のようなことでivarを設定することはできませんotherObject = anotherObjectか?

0 投票する
2 に答える
761 参照

nsmanagedobject - NSManagedObject クラスのインスタンス変数はクラス変数のように機能しますか?

IOS 5 のみ、ARC あり。私のCore Dataモデルクラスでは:

「Venus」と「Mars」はMagicalRecordを使って作成しています。私のView Controllerでは、ラベルとボタンを使用して上記をテストしています。テストによると、私が火星を「訪問」すると、金星も訪問されるようになります。ivar VisitedByHumans を Core-Data 以外のプロパティに切り替えると、期待どおりに動作します。だから私はもう「立ち往生」していませんが、ivar のことを理解したいと思っています。

0 投票する
3 に答える
476 参照

iphone - 目標 C: プロパティと ivar のどちらが変更されるか?

重複を心配していますが、他の投稿で理解できるものを見つけて答えることができないようです。質問する必要があります。

.h にある場合:

それから私の.mで

「changeButton」を押すと変更されるのは、合成されたプロパティですか、それともインスタンス変数ですか?

0 投票する
2 に答える
252 参照

objective-c - ->演算子を使用してivarを設定したい

->演算子を使用してivarを設定したい。エラーが発生しました:インターフェイスタイプを静的に割り当てることができません。ドット演算子は必要ありません。

クラスViewController

0 投票する
2 に答える
3912 参照

objective-c - ウィーク ポインターを介したブロック内の ivar への代入

isFinishedインターフェイス ファイルに読み取り専用のプロパティがあります。

YESそして、保持サイクルを作成せずに、後である時点でブロックに設定したいself:

これが正しい方法かどうかはわかりません。このコードは漏れたり壊れたりしますか? それとも問題ありませんか? おそらく私が見落としていたより簡単な方法がありますか?

0 投票する
5 に答える
14636 参照

objective-c - Objectivecでivarsとプロパティを使用する理由

私はこのトピックに関する情報を見つけることができませんでした、そしてそれについて私が知っていることのほとんどは完全な偶然によるものです(そして私のコードが機能しなかった理由を理解しようと数時間試みました)。私が見つけたほとんどのチュートリアルは、objective-cを学びながら、同じ名前の変数とプロパティを作成します。プロパティがすべての作業を実行し、変数がそこにあるように見えるため、重要性がわかりません。例えば:

Test.h

Test.m

私が知っていること

1)さて、今日(何時間も混乱した後)、プロパティをどれだけ変更してhighscore = 5091231も、[test highscore]を呼び出そうとしても、_highscoreの値が返されるため、何も変更されないことがわかりました。これは(私が思うに)test.hで設定されたivarです。したがって、test.mでの変数の変更はすべて、highscoreではなく_highscoreを変更する必要があります。(ここで間違っている場合は訂正してください)

2)正しく理解している場合(おそらく理解していない)、test.hに設定されているivarは実際のメモリを表しますが、@propertiesはそのメモリにアクセスするための単なる方法です。したがって、実装の外では、プロパティを経由せずに_highscoreにアクセスすることはできません。

わからないこと

基本的に、この状況について私が得られないのは、ivarを使用する必要があるかどうか、または@propertyと@synthesizeを使用できるかどうかです。ivarは、実際には何もしないが私を混乱させる余分なコードのようです。私が見た最近のツチのいくつかはivarを使用していないようですが、いくつかは使用しています。それで、これは単なるコーディングの好みですか、それとも実際に重要ですか?私はAppleのドキュメントを検索しようとしましたが、そこで迷子になり、探しているものが見つからないようです。どんなガイダンスでも大歓迎です。