問題タブ [declared-property]
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 - プライベートObjective-Cメソッドまたはプロパティをサブクラスに公開します
いくつかの公式の話によると、Objective-Cのクラスは、ヘッダー内のパブリックメソッドとプロパティのみを公開する必要があります。
プライベートメソッド/プロパティは、.mファイルのクラス拡張子に保持する必要があります。
protected
プライベートであるがサブクラスからアクセスできるタイプはないと思います。プライベートプロパティ/メソッドを公に宣言する以外に、これを達成する方法はありますか?
objective-c - コンパイラは、カテゴリで宣言されたプロパティの ivar を自動合成しますか?
いわゆる "Modern Objective-C" が登場する前は、カテゴリに新しいプロパティを作成するときに、setter メソッドと getter メソッドを実装する必要がありました。今、私たちはする必要はありません@synthesize
; コンパイラは、メソッドとインスタンス変数を自動的に作成します。
しかし通常、インスタンス変数をカテゴリに追加することはできないため、最新の Objective-C でカテゴリに新しいプロパティを追加するとどうなるでしょうか? コンパイラは ivar を作成しますか?
objective-c - 自動合成されたivarにアクセスできないのはなぜですか?
Xcodeの最新バージョンでは、合成を使用してivar、ゲッター、セッターを生成する必要がないことを読んでいます。Xcode自体がこれを処理し、_youIvarNameのようなものを作成しますが、これを試した後、この作品を作ることができませんでした。
プロパティを宣言しても、これらの_yourVarName Xcodeにアクセスしようとすると、そのような変数は存在しないと表示されます。
例
ヘッダーファイル:
実装:
これらの_yourIvarが機能したものにアクセスしようとする試みはありません...私がここで把握していないことについての手がかりはありますか?
編集:
私の主な質問は、@property
Xcodeがゲッター、セッター、およびインスタンス変数(先頭にアンダースコア_myVarを含む)を使用せずに自動的に生成することを宣言した場合、 @synthesize
?これは私がstackoverflowで読んだものであり、実際に機能するかどうかはわかりません。
objective-c - ドット構文を使用せずに BOOL プロパティを反転する
このコード行では、BOOL
値を反転しています。
この行を「純粋な」Objective-C 構文でドット構文なしで書き直すにはどうすればよいですか?
objective-c - Xcode がアンダースコア付きの変数を自動的に作成するのはなぜですか?
Xcode (dp-4) の最新バージョンでretain,nonatomic
、変数名の前にアンダースコアを使用するように変数が宣言されているのはなぜですか? これはある種のタイプセーフを作成しますか?
たとえば、プロパティを作成します。
内部の変数をdealloc
_ を持たないように変更しない限り、次のようにする必要があります。
どうしてこれなの?
objective-c - .hインターフェイスまたは.mファイルの拡張子でプロパティを宣言しますか?
Objective-Cでは、次のことを行うのがベストプラクティスですか。
.hでボタンなどのオブジェクトを宣言してから、.mで合成します
/li>または、.mでそれらをivarとして宣言します
/li>
多くのAppleコード、特にBreadcrumbsサンプルコードでは、それらのプロパティの多くがインターフェイスで宣言されていることに気付きました。2つの間に違いはありますか?@interface
また、プロパティがで宣言されている場合、プロパティはアンダースコアプレフィックスを使用して自動的に合成されるため、someButton = _someButton
合成が役に立たないことに気付きました。
c++ - 変数はこのスコープで宣言されていませんC++
のポインタを受け取るdisplayという名前の別の.hファイルで関数を呼び出そうとしていますが、std::vector<vector<double> >
呼び出そうとすると、このスコープで変数が宣言されていないというエラーが発生します。これがコードのサンプルです。お役に立てば幸いです。
display.hファイルは次のようなものです。
objective-c - Compiler error "use of undeclared identifier" when I remove my @synthesize statements
With the latest LLVM build, the requirement for synthesizing properties has been removed.
Therefore I was able to remove all my @synthesize
statements except for the ones for NSFetchedResultsController
. Does anyone know why the compiler is warning me when I remove the @synthesize fetchedResultsController;
line?
Error:
Use of undeclared identifier "fetchedResultsController", did you mean _fetchedResultsController?
This is my code:
objective-c - PerformSelectorの使用:BOOLプロパティにアクセスするには
performSelector:
オブジェクトを返す、を使用して、id
他のいくつかのメソッドを呼び出しています。これらのメソッドの戻り型は、実際には、、、BOOL
またはその他の種類のオブジェクトのいずれかです。int
NSDate
performSelector:
から返されたオブジェクトがであるかどうかをどのように判断できBOOL
ますか?に変換してみましたNSNumber
が、オブジェクトが。でない場合はクラッシュしますBOOL
。
次のような属性を持つクラスがあります。
このクラスはフレームワークによって生成されるため、変更できません。A
しかし、、、、をループして、各属性を呼び出しB
、データを取得したいと思います。ただし、ご覧のとおり、返品の種類はさまざまであるため、それに合わせる必要があります。C
D
私は次のようなことをしています:
objective-c - アトミックプロパティを支持する私の議論のポイントが欠けていますか?
私はこの質問(および他のいくつかの質問)を読みました:
プロパティのアトミック/非アトミック指定子がどのように機能するかを完全に理解しています(少なくともそう願っています:-D)。
Atomicは、「読み取り」操作が「書き込み」操作によって中断されないことを保証します。Nonatomicはこれを保証するものではありません。
アトミックでも非アトミックでも、1つのスレッドが読み取りを行い、2つのスレッドが書き込みを行う競合状態を解決しません。読み取り操作がどのような結果を返すかを予測する方法はありません。これは、追加の同期によって解決する必要があります。
アトミックでも非アトミックでも、全体的なデータの整合性を保証するものではありません。1つのスレッドが1つのプロパティを設定し、別のスレッドが2番目のプロパティを最初のプロパティの状態と矛盾する状態に設定する可能性があります。これは、追加の同期によっても解決する必要があります。
私の眉を上げるのは、人々が2つのキャンプに分かれていることです。
プロアトミック:nonatomic
パフォーマンスの最適化にのみ使用するのが理にかなっています。
また、最適化していない場合は、ポイント1のため、常にアトミックを使用する必要があります。これにより、マルチスレッドアプリケーションでこのプロパティを読み取るときに、完全ながらくたを取得することはありません。そして確かに、ポイント2と3を気にする場合は、その上に同期を追加する必要があります。
アトミックに対して:アトミックを使用することはまったく意味がありません。
アトミックはマルチスレッドアプリケーションのすべての問題を解決するわけではないため、とにかく同期コードを追加する必要があるため、アトミックを使用しても意味がありません。それは物事を遅くするだけです。
私はプロアトミックキャンプに傾倒していますが、何も見逃していないことを確認するために健全性チェックを行いたいと思います。