問題タブ [class-cluster]

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 に答える
1101 参照

xcode - clang を使用したクラス クラスター: `__attribute__((objc_method_family(none)))` の使用方法は?

クラスクラスタを(ARCで)実装したいのですが、clangが邪魔です。別のクラスの具体的なインスタンスを返す 1 つの init メソッドを次に示します。これがクラス クラスターのポイントです。

そしてclangはreturn声明に不満を述べています:

私はその警告の理由を理解しています:実装クラス (またはおそらくサブクラス) のインスタンスを返すことになっているメソッドinitのファミリーに属するものとして clang によって認識されます。initこれは通常、インスタンス化する実際の具象クラスが条件によって異なる可能性があるクラス クラスターには当てはまりません。

__attribute__((objc_method_family(FAMILLY)))clangはalloc、メソッド ファミリーの自動認識をオーバーライドするアノテーションをcopy提供initmutableCopyますnew。である可能性もnoneあり、ドキュメントには次のnoneように記載されています。

残念ながら、私の場合はうまく機能させることができません。に次の宣言を追加すると@interface:

その後、警告は消えません。属性を実装に追加すると:

その後、警告は消えずエラーも発生します。

両方を実行すると、最初の警告は消えませんが、追加の警告が表示されます。

だから私は初歩的な何かが欠けていると思いますが、何ですか?

これは Xcode 4.3.2 または Xcode 4.4DP2 です。

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

objective-c - クラスクラスタの「トップ」クラスの名前を取得するには?

設定:

JSON経由でデータが入ってきます。

NSJSONSerialization を使用して、JSON をオブジェクトに変換します。

JSON の数値は、Objective-C ではいくつかの異なる可能なクラス タイプとして提供されます。

( NSNumber, NSDecimalNumber or __NSCFNumber) - それらはすべて の下のクラス クラスタにありますNSNumber


問題:

NSNumber1) type のいずれかの値を持っている場合、クラス クラスター「傘」 class - を取得する方法が必要NSNumber, NSDecimalNumber or __NSCFNumberです。

文字列も同様です。これらのいずれかがある場合、を取得する方法が必要ですNSString: NSString, NSMutableString, __NSCFString, __NSCFConstantString

2) たとえば、NSString クラスター内のすべてのクラスのリストをコードで取得できる場合にも機能します。次に、実行時にリストを動的に作成し、リストが完全であることを確認します。


私がこれまでに持っているもの:

これまでのところ、私はそれを行うための正気の方法を思いつくことができませんでした. だから私は許可されたタイプのリストを持っていますが、それは完全ではないかもしれません.

コード: https://github.com/icanzilb/JSONModel/blob/master/JSONModel/JSONModel.m#L45

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

objective-c - ARC を使用したクラスター初期化子

このドキュメントをクラス clustersで解析すると、おおよそ次のようにNSNumber実装されます。initWithChar:

同様に、Nib からビューを初期化するためにこのパターンを使用できます。

self私が疑問に思っているのは、これらの場合、ARC は未返却のリリースを管理しているのでしょうか? それはどこかに文書化されていますか?

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

ios - 目的のcでクラスクラスタを作成する - 抽象スーパークラスで呼び出されるメソッド?

UITableViewDatasource のクラス クラスターを作成しようとしています。私のインターフェースは次のようになります。

内部的には、抽象クラスは次のようになります。

さて、抽象クラス(ArrayDatasource)がuitableviewデータソースに必要なメソッドを実装していないと不平を言っているコンパイラを沈黙させるために、これらを追加しました:

しかし、クラスターを使用するときはいつでも、データソース メソッド呼び出しは抽象クラスに行きます! これらのオーバーライドを削除すると、すべてが希望どおりに機能します (コンパイラの警告がまだ残っている場合を除く)。

何が起こっている?SingleArrayDatasourceインスタンスが aまたは aのときに、これらのメッセージが抽象クラスに送信されるのはなぜTwoDimentionalArrayDatasourceですか?

アップデート

具体的なサブクラスの1つを実装する方法は次のとおりです

@implementation SingleArrayDatasource

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

ios - ARC を使用したクラス クラスター

UIViewControllerいくつかのポイントを達成するために、のサブクラスとしてクラスクラスターを作成しようとしています:

1.実際の iOS バージョンによる ViewController の動作の違い

2. iOS のバージョン チェックでコードが乱雑にならないようにする

3.発信者は気にする必要はありません

これまでのところ、クラスMyViewControllerMyViewController_iOS7およびを取得しましたMyViewController_Legacy

インスタンスを作成するには、次のmyViewControllerWithStuff:(StuffClass*)stuffように実装されているメソッドを呼び出します。

呼び出し元は を使用しmyViewControllerWithStuff:ます。その後、そのように作成されたビュー コントローラがUINavigationControllerのナビゲーション スタックにプッシュされます。

これは、大きな欠点が 1 つありますが、ほぼ意図したとおりに機能します。ARC はMyViewController_xxx、ナビゲーション スタックからポップされたインスタンスの割り当てを解除しません。iOSのバージョンは問いません。

私は何が欠けていますか?

更新: -initWithStuff:

このメソッドは にも実装されていMyViewControllerます。違いは後で発生します (例: viewDidLoad:)。

0 投票する
7 に答える
5022 参照

ios - Swift のカスタム クラス クラスタ

これは比較的一般的な設計パターンです。

https://stackoverflow.com/a/17015041/743957

呼び出しからサブクラスを返すことができますinit

Swift を使用して同じことを達成するための最良の方法を見つけようとしています。

Swiftで同じことを達成するためのより良い方法がある可能性が非常に高いことを私は知っています. ただし、私のクラスは、私が制御できない既存の Obj-C ライブラリによって初期化される予定です。したがって、このように動作し、Obj-C から呼び出せるようにする必要があります。

任意のポインタは非常に高く評価されます。

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

ios - Appleによるクラスターパターン(NSStringおよびNSCFString)と同じ動作を実装するにはどうすればよいですか

テスト目的で次のコードを書いているだけです。

次のエラーが表示されます。

次のコードを書くと、同じことが起こります

グーグルで、それがオブジェクトinitWithFormatを返すことを知りました。NSCFString私の質問は、NSCFStringの派生クラスである場合、なぜ でメソッドをNSString呼び出せないのかということです。可視性を停止できる場合、(派生クラス) のメソッドをオーバーライドせずにコードに実装するにはどうすればよいですか。initWithFormatNSCFStringNSCFString

簡単に言えば、NSCFString が NSString の派生クラスである場合、なぜその上で基本クラス (initWithFormat) メソッドを呼び出せないのでしょうか?

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

ios - NSNotification から継承

のサブクラスを作りたいNSNotificationカテゴリなどを作成したくありません。

ご存知かもしれませんNSNotificationが、やのようなクラス クラスタです。NSArrayNSString

クラスター クラスのサブクラスが次のことを行う必要があることは承知しています。

  • 独自のストレージを宣言する
  • スーパークラスのすべての初期化メソッドをオーバーライドする
  • スーパークラスのプリミティブ メソッドをオーバーライドします (後述)。

これは私のサブクラスです(派手なものはありません):

私がそれを使用すると、私は異常な結果を得る:

から継承するには他に何をしなければなりませんNSNotificationか?

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

objective-c - Objective-c - クラス クラスタで意思決定をカスケードするための推奨パターン

特定の基準が満たされたときに各「具体的な」クラスがより具体的なインスタンスを返すことができるように、「マルチレベル」のクラスクラスターを作成したいと思います。

たとえば、基本クラスでは次のようになります。

基本クラスに新しい条件 (大きな "if" ステートメント) を常に追加したくありません。これは、条件が具体的なクラスに非常に固有のものになるためです。ほとんどの場合、新しい機能に関係する最適化です。

これにはより良いパターンがありますか?

各サブクラスで追加のチェックを行うクラスメソッドを作成することを考えましたが、これは各サブクラスで [Subclass initWithData:data] を呼び出す必要があるため、非常に面倒です。

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

ios - 私のコードが [super init] 関数に入らなかったのはなぜですか?

と の 3 つのクラスQuestionChoiceありBlank、 andはandQuestionのスーパークラスです。ChoiceBlank

次に、次のようにいくつかのメソッドを記述します。

その後:

出力は:</p>

なぜ[super init]実行されなかったのか理解できませんか?