Objective-C2.0文法メモ 基本事項いろいろ

Hello World

まずはプロジェクトを作成してみます。
File>New>New Project>Command Line Tool>"Next">プロジェクト名"Hello", Type:Foundation>パスを指定して"Create"
実行するとコンソールに"Hello World!"と表示されます。
main.m

#import <Foundation/Foundation.h>
int main (int argc, const char * argv[])
{
    NSLog(@"hello world!"); // ログを出力する
    return 0;
}

ソースファイル

C,C++と同様にヘッダと実装部分に分けてます。
ヘッダは.hファイル, 実装を.mファイルに記述します。

ヘッダファイルのインクルード

#import <include/library.h>
#import "library.h"

型・変数定義

objc.hでObjective-C専用の型や変数が定義されています。

NULLポインタ

NULLは定義されておらず、nilと記述します。

int *ptr = nil;
boolean型

BOOL型を利用します。 ※ObjectiveC++としてboolを利用することもできる

BOOL condition = YES;
condition = NO;
// ちなみにobjc.hで以下のように定義されている
#define YES BOOL(0)
#define NO  BOOL(1)
id型

全てのクラスの基底クラスを参照する型です。(JavaではObject型に相当する)

Foundation Framework

Objective-Cの基本的なクラスを集めたものがFoundation Frameworkです。これらのクラスには全て"NS~"という接頭辞がついています。Foundation.hをインクルードして使います。

#import <Foundation/Foundation.h>

最後に、peimitive型に近いクラスについて少しだけ触れておきます。

NSObject:オブジェクト型

全クラスの基底クラスを表すクラスがNSObjectです。C言語で定義されているid型が参照しているオブジェクトをObjective-Cで表現したクラスになります。

NSNumber:数値

数値を表すクラスがNSNumberです。型変換や文字列への変換に利用することができます。

    // 数値を設定する
    NSNumber *number = [NSNumber numberWithFloat:3.14f];
    // 数値を取得する
    int value = [number intValue];
    //  文字列に変換する
    NSString* str = [number stringValue];
    //  コンソールに出力する
    NSLog(@"number:%@, string:%@", number, str);

(参考)扱うことができる数値一覧

    NSNumber *bool_number = [NSNumber numberWithBool:YES]; 
    NSNumber *char_number = [NSNumber numberWithChar:0];
    NSNumber *uchar_number = [NSNumber numberWithUnsignedChar:0];
    NSNumber *short_number = [NSNumber numberWithShort:0];
    NSNumber *ushort_number = [NSNumber numberWithUnsignedShort:0];
    NSNumber *int_number = [NSNumber numberWithInt:0];
    NSNumber *uint_number = [NSNumber numberWithUnsignedInt:0];
    NSNumber *long_number = [NSNumber numberWithLong:0];
    NSNumber *ulong_number = [NSNumber numberWithUnsignedLong:0];
    NSNumber *float_number = [NSNumber numberWithFloat:0.0f];
    NSNumber *double_number = [NSNumber numberWithDouble:0.0];
    NSNumber *llong_number = [NSNumber numberWithLongLong:0];
    NSNumber *ullong_number = [NSNumber numberWithUnsignedLongLong:0];

NSString:文字列

文字列リテラル

ダブルクオーテーションマークの前に@を付けます。

@"string"
文字列クラス

文字列を扱うNSStringクラスが用意されています。

    NSString *str = @"hello";
    NSLog(@"enter your word: %@",str);

フォーマット指定子で文字列を作成する例:

    NSString *str = [NSString stringWithFormat:@"%d, %@ and %s ", 1, @"objc", "c"];

NSLog:ログ出力

コンソールにログを出力するにはNSLog関数を使います。フォーマット指定子も扱うことができます。

    int num = 3;
    NSLog(@"num:%d",num);