関係演算子に関して

制御構文などで使う関係演算子に関してですが、
Objective-Cには、下記の演算子があります。

演算子
==
!=
>=
<=

値の比較をする時に利用するのでが、
比較した結果は、「0」か「0」以外になります。
「真」の場合は、「0」以外で、「偽」の場合は、「0」になります。

int arg1 = 100;
int arg2 = 200;
int arg3 = arg1 == arg2;
int arg4 = 100;
int arg5 = arg1 == arg4;
NSLog(@"%d", arg3); // 0
NSLog(@"%d", arg5); // 1(0以外)

条件を評価した結果が0と0以外で判断されるので、
下のような書き方もできちゃいます...あんまりやらない方がいいと思いますが。

int arg6 = -1;
if (arg6) {
    NSLog(@"真");
} else {
    NSLog(@"偽");
}
int arg7 = 0;
if (arg7) {
    NSLog(@"真");
} else {
    NSLog(@"偽");
}

それと文字列比較ですが、関係演算子では、できません。
文字列は、そもそもオブジェクトなので、関係演算子では、オブジェクトの中身の比較をすることはできません。
実は、オブジェクトをインスタンス化する時に変数を定義しますが、
その変数は、オブジェクトそのものが格納されているわけではありません。
オブジェクトが格納されている領域への参照(アドレス)が入っていますので、
比較しても無意味です。
文字列の比較には、isEqualToStringを使います。

NSString *arg8 = [NSString stringWithFormat:@"テストです。"];
NSLog(@"%@", arg8);
NSString *arg9 = [NSString stringWithFormat:@"テストです。"];
NSLog(@"%@", arg9);
// 偽になります。
if (arg8 == arg9) {
     NSLog(@"真");
} else {
     NSLog(@"偽");
}
// 真になります。
if ([arg8 isEqualToString:arg9]) {
     NSLog(@"真");
} else {
     NSLog(@"偽");
}