[解決済み] NSStringの比較を理解する
2023-05-15 15:34:53
質問
次の比較は両方とも真と評価されます。
1)
@"foo" == @"foo";
2)
NSString *myString1 = @"foo";
NSString *myString2 = @"foo";
myString1 == myString2;
しかし、2つの
NSString
を等号演算子で比較することができない場合があります。
[myString1 isEqualToString:myString2]
が必要です。 どなたか、この点について教えていただけませんか?
どのように解決するのですか?
その理由
==
が動作するのは、ポインタの比較のためです。定数を定義すると
NSString
を使って
@""
を使うと、コンパイラはその参照を一意化します。同じ定数がコード内の他の場所で定義されている場合、それらはすべてメモリ内の同じ実際の場所を指すことになります。
を比較するとき
NSString
のインスタンスを比較するときは
isEqualToString:
メソッドを使用します。
NSString *myString1 = @"foo";
NSString *myString2 = @"foo";
NSString *myString3 = [[NSString alloc] initWithString:@"foo"];
NSLog(@"%d", (myString2 == myString3)) //0
NSLog(@"%d", (myString1 == myString2)); //1
NSLog(@"%d", [myString1 isEqualToString:myString2]); //1
NSLog(@"%d", [myString1 isEqualToString:myString3]); //1
[myString3 release];
編集する
NSString *myString3 = [[NSString alloc] initWithString:@"foo"];
// this is same with @"foo"
initWithString:
ではもう新しい参照は作られないので、その場合は
initWithFormat
,
NSString *myString3 = [[NSString alloc] initWithFormat:@"foo"];
関連
-
[解決済み] UTF-8でエンコードされたNSDataをNSStringに変換します。
-
[解決済み] NSURL を NSString に変換する。
-
[解決済み] InvariantCultureとOrdinalの文字列比較の違いについて
-
[解決済み] NSStringをNSNumberに変換する方法
-
[解決済み] NSStringにパーセント記号を追加する方法
-
[解決済み] 「NSString *' 型のパラメータに 'const NSString *' を送ると修飾子が破棄される」警告
-
[解決済み】NSDateをNSStringに変換する。
-
[解決済み】大文字小文字を区別しない比較 NSString
-
[解決済み] [Solved] NSString property: copy or retain?
-
[解決済み] error: Writeable atomic property cannot pair with synthesized setter/getter and the user defined setter/getter.
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] error: Writeable atomic property cannot pair with synthesized setter/getter and the user defined setter/getter.
-
[解決済み] NSPredicate: NSDateプロパティの日によるオブジェクトのフィルタリング
-
[解決済み] Objective-C の boolean の書式設定文字列?
-
[解決済み] NSArrayのディープコピー
-
[解決済み] 「アプリケーションはアクティブなコントローラを表示しようとした」?
-
[解決済み] 数字の後に "f "をつける
-
[解決済み] UIButtonのテキストを変更する
-
[解決済み] 宣言されたプロパティは、対応するインスタンス変数を必要としますか?
-
[解決済み] libxml/tree.h にそのようなファイルやディレクトリはありません。
-
[解決済み] ARCはディスパッチキューをサポートしていますか?