頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


プロパティを使わずクラス外から変数にアクセスだと?

@publicでクラスの外からアクセスできるって衝撃の(?)お話だよ。

Objective-Cのインスタンス変数に関して
@private

@protected
@public
とかあるのは知ってたけど全然使ったことなかったんだ。
それぞれどういう意味なのかってのは
Objective-Cのクラス定義を理解しよう - @IT
あたりに書いてあるんだけど、この@publicってのが不思議なヤツなんだ。
上のサイトには
有効範囲がpublicの場合は、文字通りどこからでもアクセスできます。
なんて説明があるんだけど、、、はあ?って思ってさ、試してみたんだよ。

あるクラス(Class1って名前ね)のヘッダーで
@interface Class1 : NSObject {

@public
    int publicInteger;
}
って変数を宣言しとくでしょ。イニシャライザあたりで値を設定しといたら、
{
    Class1 *class1 = [[Class1 alloc] init];
    NSLog(@"class1->publicInteger = %d",class1->publicInteger);
}
こんなので別のクラスからちゃんとアクセスできるんだ!びっくり!

驚いた人の画像

↑こんな感じだよ。だって他のクラスからのアクセスなんてプロパティを使う方法しか知らなかったからさ。

実のところプロパティとの使い分けがややこしくなりそうなので自ら使うことはないと思うんだけど、これから人様のコードを見る時にどういう使い分けをしているのか、そういうのに気をつけながら読むことにするよ。

<< GoogleConversionTrackingSDKに不具合あったんだって   TopPage  窓ガラスにプチプチで節電 >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/684-b6c9c1e0




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad