問題タブ [synthesize]
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.
objective-c - このivarに割り当てても効果がないのはなぜですか?
BPGameEngine
読み取り専用プロパティを持つクラス がありますcurrCharacter
。_currCharacter = someCharacter;
以前は、 の中で ( のように) ivar に直接代入していましたBPGameEngine
。サブクラスで、このプロパティに書き込む必要があることに気付いたので、そのように匿名カテゴリで再宣言しました
その後、コンパイラーにエラーが発生し (奇妙なことに、2 日後には再現できなくなりました)、@synthesize ステートメントが必要であることをほのめかしていたので@synthesize currCharacter = _currCharacter;
、サブクラス ( BPGameKitMPEngine
) に追加しました。
iVar を直接使用しただけなので、同様の匿名カテゴリをスーパークラスに追加しませんでした。次に、super( )への呼び出しで呼び出され_currCharacter = someCharacter;
たメソッド内にある行が単に何もしないことを発見しました。デバッガーに表示され、nil ではありませんでしたが、行が実行された後、残りました。奇妙なことに、サブクラスに同様の匿名カテゴリを追加すると、問題が修正されました。BPGameEngine
BPGameKitMPEngine
[super methodContainingAssignmentToCurCharIvar]
_currCharacter
someCharacter
_currCharacter
nil
@synthesize
の一貫性のない要件は、@synthesize
Xcode のバグに違いないように思えますが、これ以外のことには困惑しています。@synthesize
誰かがサブクラスにあることの問題を説明できますか?
multithreading - コア データ マルチスレッド 合成された属性 なし
Core Data を使用するアプリがあります。私のアプリはバックグラウンド スレッドで何らかの処理を行い、出力をコア データに保存します。同時に、メイン/UI スレッドがコア データの読み取り操作を実行します。
現在、カスタムのゲッターとセッターを作成するために、管理対象オブジェクトの 1 つの属性を合成しようとしています (長い文字列をファイルに自動的に保存し、代わりにパスを保存するだけです)。しかし、後でメインスレッドでこれらのオブジェクトを読み取ると、それらは nil になりました。カスタムのゲッターとセッターを削除して、単に に@dynamic attr
置き換えてみまし@synthesize attr = _attr
たが、それでも機能しなくなりました。(私は自分のプロジェクトをきれいにして、シミュレーターと私が試していたデバイスの両方から削除しました)。
元の構文を復元した瞬間、すべてが再び機能し始めました。何がそのような動作を引き起こしているのでしょうか?
objective-c - Objective-C: 合成変数にアクセスできません
私は Cocos2d を使用しており、別の CCScene から変数 (CakesEaten) にアクセスしようとしています。
次のエラーが表示されます: MainScene タイプのオブジェクトにプロパティ "CakesEaten" が見つかりません。ビルド時に受け取る唯一のエラーです。
ios - iOS 7 Dev - @synthesize が ivar を自動作成しない
現在、最新バージョンの Xcode (v5.0.2) を使用しており、アプリの展開ターゲットは iOS 7.0 です。
私の問題は、どのクラスでも、ヘッダーにプロパティを設定できることです
元:@property (strong, nonatomic) NSString *firstName;
実装ファイルでは、問題なく合成できます
元:@synthesize firstName;
私の問題は_firstName
、コードで使用できないことです。私は他のプロジェクトで自動ivarを問題なく使用しました(プロパティ名の前にアンダースコアが付きます)。
Xcode は不平を言い、アンダースコアのないプロパティの名前に変更するように指示します。このプロジェクトがアンダースコア付きの ivar を自動的に作成しない理由がわかりません。Objective-C の古いバージョンでは、これを自分で行う必要がありましたが、iOS 7 では必要ありません。
ありがとう!
ios - IOS: プロパティと自己
を宣言するときは、次のNSString
ようにします。
他のクラスからこの文字列へのアクセスを許可したい場合は、この方法でプロパティを追加します
そして私は合成を書きます
今、私はいくつかの質問があります:
- プロパティを使用する場合、インターフェイスで単純な宣言も使用する必要がありますか?
- プロパティとして使用する場合
my_string
、常にself.
前に使用する必要がありますか? - プロパティを使用する場合
@synthesize
、それぞれに記述する必要がありますか? (必要でない場合があることがわかったからです。