20

ここでの私の目的は非常に単純です。NSStringいくつかのテスト データに を設定してから、クラスを返す必要がありますNSString。これが私のコードです:

NSString* stringer = [NSString stringWithFormat: @"Test"];
NSLog(@"%@", [stringer class]);

ログによると、クラスはNSCFStringではなくNSStringです。何が起きてる?

4

2 に答える 2

30

NSString は実際には、さまざまなタイプの文字列オブジェクトのコンテナ クラスです。通常、NSString コンストラクター、実際には NSCFString 型のオブジェクトを返します。これは、Core Foundation CFString 構造体の薄いラッパーです。

于 2008-12-26T15:21:09.160 に答える
25

NSString はクラス clusterであり、NSNumber や NSArray などの他の Foundation タイプと同様です。

クラス クラスタは、Foundation フレームワークが広範囲に使用する設計パターンです。クラス クラスタは、公開された抽象スーパークラスの下に、多数の非公開の具体的なサブクラスをグループ化します。このようにクラスをグループ化することで、オブジェクト指向フレームワークの機能の豊富さを損なうことなく、一般に公開されているアーキテクチャを簡素化できます。クラス クラスタは、「Cocoa デザイン パターン」で説明した Abstract Factory デザイン パターンに基づいています。</p>

于 2008-12-26T17:12:42.290 に答える