Pages

2011年10月29日土曜日

Xcode4.2のお作法

Xcode4.2になってからソースコードの書き方の作法も違ってきてるみたいです。
前からもそうだったのかもしれませんが、初めて気づきました。

これまでは、InterfaceBuilderでリンクするアウトレットプロパティとかは、
ヘッダファイルに下のように宣言していました。

@interface ViewController : UIViewController {
  UILabel* titleLabel;
  UIButton* closeButton;
}

@property (nonatomic, retain) IBOutlet UILabel* titleLabel;
@property (nonatomic, retain) IBOutlet UIButton* closeButton;

@end


外から参照する必要のないプロパティもヘッダに宣言するという
ある意味、多少気持ちの悪い書き方でしたよね。
@privateとかいう記述もありましたが、結局ヘッダに書いています。

これが、Xcode4.2では、ヘッダに書かなくていいようになっています。
どう書くかというと、.mファイルに次のように記述します。

@implementation ViewController {
  __strong IBOutlet UILabel* titleLabel;
  __strong IBOutlet UIButton* closeButton;
}

この__strongっていうのは、今までヘッダにretainを指定していたのと同じ意味みたいです。
__strongはデフォルトで省略してもいいみたいです。
__strongを書くと後で説明するリンクのマークが表示されないみたいなので、
私は書かない方向にシフトしました。

この__strongに対して__weakっていうのもあるみたいです。
これは参照カウントを加算しないのでしょうか、
結局InterfaceBuilderでリンクしてもそのオブジェクト自体が表示されませんので、
この場面では実質使うことはないでしょうね。


ソースコードの左の部分、InterfaceBuilderとのリンク状況が記されています。
白丸はリンクされていないもの、二重丸はリンクされているものです。

ちなみに、ボタンのTouch Up InsideのセレクタonCloseButtonも
ヘッダでは宣言していませんが、IBAction宣言しておけば、ちゃんと使えています。

0 コメント:

コメントを投稿