問題タブ [objective-c-protocol]

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 投票する
1 に答える
176 参照

objective-c - プロトコルで宣言されたプロパティの規則について明確化が必要

プロトコルで宣言されたプロパティについていくつか質問があります。

戻り型の差異

さて、プロトコル/クラスの組み合わせでこれを試してみましたが、残念ながらコンパイルされました。

それはどのように機能しますか?これは技術的にインターフェースに準拠していませんか?

プロパティ宣言修飾子

私の Mac は今再起動しているので、これを試すことはできませんが、プロトコル宣言にはそれを裏付けるものがないため、これで問題ないと思います。すべての修飾子が呼び出し元にとって重要なわけではなく、プロトコルを実装するクラスにとってのみ重要です。

0 投票する
0 に答える
334 参照

objective-c - XCode に、実装ファイルに含まれていないヘッダー ファイルのインポートやクラスのオートコンプリートを提供させる方法はありますか?

ヘッダー ファイルの編集中に、編集中のファイル自体がターゲットに含まれるファイルによってインポートされない限り、XCode はインポートするヘッダー ファイルまたはインポートされたファイルからのクラスを自動提案しないことに気付きました。

理由はなんとなくわかりますが、これは非常にまずいです。コンパイル時の失望 (おっと! これはインポートできるクラスではありませんでした) と引き換えに、ヘッダーを作成する際の時間を大幅に節約できることをとてもうれしく思います。

ところで、私は前方クラスとプロトコル宣言を使用できることを認識していますが、メモリにコミットしていない名前のものを使用する必要があることが多いため、これは役に立ちません。前方宣言することがわかったら、そうします!

これについて XCode をよりリベラルにする方法はありますか?

編集:写真付き

文字「#i」を入力すると、ターゲットに追加される実装ファイルに含まれるヘッダー ファイルに次のように表示されます。

前

今、編集していたヘッダーのインクルードをコメントアウトします

コメント

これが私が得たものです-しかし、オートコンプリートは引き続き機能します

後

新しいプロトコルを作成すると、もちろん、一部の実装ファイルによってインポートされません (これは新しく、クラスではないため、関連付けられた実装ファイルは既に作成されていません)。

新しいプロトコル

したがって、インポート(およびクラス)のオートコンプリートは機能しません...実装からインポートするまで

輸入プロトコル

そして今、オートコンプリートが機能します

わーい

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

objective-c - タイプ「SwiftClass」は、満たすことができない要件があるため、プロトコル「ObjcProtocol」に準拠できません

Swift クラスに実装しようとしている Objective-C プロトコルがあります。例えば:

次のようなSwiftクラスでそれに準拠しようとすると:

次の恐ろしいコンパイラ エラーが発生します。

タイプ「SwiftClass」は、満たすことができない要件があるため、プロトコル「ObjcProtocol」に準拠できません。

これを解決するにはどうすればよいですか?

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

ios - クラスが同じプロパティを持つ 2 つのプロトコルに準拠するとどうなりますか?

2つのプロトコルがあるとしましょう

そして別の

そして、これらのプロトコルに準拠するクラスがあります

.h ファイル

.m ファイル

どの trackCount プロパティを参照しますか? trackCount を 2 回使用できますか?

確かにコンパイル時エラーは発生しません。