前からもそうだったのかもしれませんが、初めて気づきました。
これまでは、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 コメント:
コメントを投稿