特に何も指定しなかったときのインスタンス変数の有効範囲は@protectedと同等。
以下ディレクティブ。
ディレクティブ | 意味 |
---|---|
@private | クラス内でのみアクセス可能 |
@protected | クラス内と、その継承されたクラスでのみアクセス可能 |
@public | どこからでもアクセス可能 |
@package | 意味不明 |
@packageは意味不明。private_externが何なのか知らない。
シンボルテーブルには登録しないってやつ?
androidの@hideみたいな感じ?
メモ代わり。てきとーに。 いや、ですからてきとーですって。 2年前ぐらいにPythonあたりでメールくれた方、ごめんなさい。メール紛失してしまい無視した形になってしまいました。。。
特に何も指定しなかったときのインスタンス変数の有効範囲は@protectedと同等。
以下ディレクティブ。
ディレクティブ | 意味 |
---|---|
@private | クラス内でのみアクセス可能 |
@protected | クラス内と、その継承されたクラスでのみアクセス可能 |
@public | どこからでもアクセス可能 |
@package | 意味不明 |
投稿者 atkonn 時刻: 23:10:00 0 コメント
ラベル: Objective-C, お勉強, メモ
レシーバが持つインスタンス変数への参照
インスタンス変数の名前そのままでアクセス可能。
- (void)setA:(BOOL)b { a = b; }レシーバが保持しているインスタンス変数aへアクセス
@interface ObjA { ObjB *objB; } @interface ObjB {
@public BOOL a; } @implementation ObjA - (void)methodA:(BOOL)b { objB->a = b; }
投稿者 atkonn 時刻: 22:43:00 0 コメント
ラベル: Objective-C, お勉強, メモ
@implementationで始まり、@endで終わる。
#import "この実装のインタフェース.h" @implementation クラス名 { インスタンス変数宣言 } メソッド定義インスタンス変数宣言は必要なければ省略可能。その歳は{}も省略する。
- (型)メソッド名 { // ここに実装を定義 }
#import "stdarg.h" - (void)methods: param1, ... { va_list ap; va_start(ap, param1); .... }
ラベル: Objective-C, お勉強, メモ
インタフェースが、その階層以外のクラス名を記述している場合は、
そのクラスのインタフェースファイルをインクルードするか、
@classディレクティブを記述する。
@class クラス名; @class クラス名, クラス名;@classディレクティブは、インタフェースをインクルードしない。
ラベル: Objective-C, お勉強, メモ
インタフェースの場合、そのインタフェースに依存する全てのソースにincludeする必要がある。
インタフェースファイルは通常以下のようにincludeする。
#import "インタフェースファイル.h"
ラベル: Objective-C, お勉強, メモ