Software Development on Apple

iPhoneやMacで楽しもう!

Cocoaのあるクラスの使用例に対するAppleのサンプル・ソースを簡単に探す一つの方法

Posted by seachicken : 4月 10, 2009

先ずは、該当するCocoaクラスのリファレンスドキュメントをWebなどで検索します。そのドキュメントをよく見ると「Related sample code」という項目があります。この項目はドキュメントの先頭にも、そして各メソッドの説明の中でも登場します。つまり、そのクラス、そのメソッドが使われているAppleのサンプル・ソースがそこには書かれています。後は簡単、ADCでその名前で検索し、サンプル・ソースを取得すればいいです。

Posted in Cocoa, Memo, Tips | Leave a Comment »

static in C language

Posted by seachicken : 4月 10, 2009

下記はCのstaticの使用についてのメモ。

static functions are functions that are only visable to other functions in the same file. (Like private of Java)

For some reason, static has different meanings in in different contexts.

1. When specified on a function declaration, it makes the function local to the file.

2. When specified with a variable inside a function, it allows the vairable to retain its value between calls to the function.

Posted in C | タグ: | Leave a Comment »

NSCFTypeと関わるエラーメッセージについて

Posted by seachicken : 9月 19, 2008

練習を兼ねてコードを書いていたら、以下のようなメッセージが出てエラーとなったので簡単に調査

[NSCFType count]: selector not recognized 

 

要するに、メモリ管理が間違っていて使おうとしているインスタンスなどが既に解放された場合にこの「NSCFType」というものが出現するらしい。こいつの存在についてはどこにも記述されてないようでやかましい。ちなみに、デバッガーから該当する変数を調べると「out of scope」と表示された。

 

詳しくは以下のリンクを読んでみること。

http://imlocation.wordpress.com/2007/09/13/strange-objects-nscftype-indicate-memory-management-bugs/

Posted in Cocoa, memory management, Objective-C | 1 Comment »

Cのポインタ超簡単整理

Posted by seachicken : 8月 30, 2008

私のようにJavaしか知らない人には見慣れていない存在であるポインタ。そのポインタについての簡単な整理。

ポインタは変数のメモリアドレスを格納する変数型。変数名の前に「*」をつけて表示

  int *hoge_p;

  int hoge = 5;

ポインタに変数のアドレスを代入。変数名の前に「&」をつけるとその変数のメモリアドレスの先頭値を返す。

  hoge_p = &hoge; // この時には「*」をつけない

ポインタの値の表示(「*」をつけない)

  printf(”%u¥n”, hoge_p); // ポインタが格納しているメモリアドレスを表示

ポインタが指しているデータの値を表示(「*」をつける)

  printf(”%u¥n”, *hoge_p); // 変数「hoge」が持っている値「5」を出力

ポインタによるデータの値の変更

  *hoge_p = 10;

  printf(”%d¥n”, hoge); // hogeの値として「10」を表示

Cの関数呼び出しでは引数が値渡し(既存の値をコピーして渡す)であり、関数の中で変更した値は関数の外では無効である。

参照渡しを行うためには引数をポインタに定義する

  change(int *x, int *y); // 関数の引数をポインタとして定義

  

  change(&n1, &n2); // 関数を呼び出す時にアドレスを渡す。「引数の参照渡し」と呼び、関数の中の変更を関数の外でも反映することができる。

sizeof」演算子を使って変数および型のサイズを取得可能

  siezeof(variable);

  sizeof(int);

 

◎ポインタのポインタ◎

ポインタは変数のみでなく、他のポインタのアドレスを格納することもできる。ポインタのポインタは「**」で表示。

  char *str_p[] = {“Jan”, “Feb”, “Mar”};

  char **str_p_p;

  str_p_p = str_p;

  int i, j;

  for(i = 0; i<3; i++){

    j = 0;

    while(*(*(str_p_p + j) != ‘¥0’) {

      printf(“%c”, *(*str_p_p + j));

      j++;

    }

    ++str_p_p;

  }

 

◎ポインタのキャスト◎

ポインタの実体は大抵のプラットフォームでただのint型でしかないため、ポインタを別のデータ型を示すものにキャストできる。

  char s[4] = { 1, 2, 3, 4 };     

   /* たとえば1000番地(1)から1003番地(4)まで */

  int *p;

 

  void main()

  {

        p = (int *)s;      /* p = 1000 */

        /* 1000番地からintのサイズ分(4byte)を0にする */

        *p = 0;     

        printf( “%d %d %d %d\n”, s[0], s[1], s[2], s[3] );

  }

 

但し、ポインタの型によって操作するデータの範囲(サイズ)が変わるので注意が必要。

(上記の場合、char型のポインタをint型に変えることで全てのcharデータが「0」に変わってしまう。(charは1byte、intは4byte))

 

各データタイプのサイズは下記のURLで参照可能。

http://www.geocities.jp/ky_webid/c/010.html

Posted in C | タグ: , | Leave a Comment »

Hello world!

Posted by seachicken : 8月 30, 2008

Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!

Posted in 未分類 | 1 Comment »