頭と尻尾はくれてやる!

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


Objective-Cのヘッダーの@classってなんだ?!

hogeViewControllerクラスってのが何をしているのかよくわからない、ってことで試しにWindow-Based Applicationを使ってみました。

Xcodeで作成してみると、View-Based Applicationよりも原始的な(?)感じですね。
xibファイルも一つしかないし、ViewControllerクラスもないし。
ここからView-Based Applicationっぽく画面にボタンやラベルを設置して、、、というようなことをやってみる、というのを見つけました。
あらびき林檎。 - iPhoneアプリ HelloWorld その2 ViewControllerの追加

これを参考にxibファイルとViewControllerクラスを追加。
コードも記事通りに追加して、動作確認。

ここまではいいんだけど、テンプレのView-Based Applicationと何やら記述が違う。
記事内だと、hogeAppDelegate.mの中の
[window addSubview:viewController.view];
の前に、
hogeViewController *controller = [[hogeViewController alloc] initWithNibName:@"hogeView" bundle:[NSBundle mainBundle]];
というようなオブジェクト生成する部分があるのですが、View-Based Applicationの場合はそういう記述がないのです。

見比べながら、どーなってるねん?といじったり調べたり、、、
おかげでちょっとは理解が深まったかな、、、?
きっと、Interface Builderでごにょごにょすると、Xcode側でコードとしてオブジェクトを生成しなくてもいいみたい。
そういえば、ラベルでもボタンでも別にオブジェクト生成しなくても使ってきたしね。

ところで、調べているうちにView-Based ApplicationのhogeAppDelegate.hに
@class hogeViewController;
なる記述がありました。
ん???
なんだこれ?
と思ってGoogle先生に聞きまくるもなかなかたどり着けず、、、
ようやく、
@classと#importの使い分け « StudioT::DevLog
という記述を発見。

@class ClassName;
はClassNameをクラス名として使用することを宣言

#import "ClassName.h"
は複数回読み込み防止機能付き#include

そのクラスの機能を実際に使用する必要のないヘッダーファイルでは@classを使用し、
インターフェイスを使用する必要のある実装ファイルでは#importを使用する。

なるほど、そういうことか。

<< 車を注文した!  TopPage  UIViewControllerクラスって何やってるの? >>

コメント


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

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/366-771779fa




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

FC2Ad