Objective-C 基礎編 Vol4

2010/05/10

音楽やってる時間がないとはいえ、今月は1本、来月は2本(?)演奏があったり。 結局、色々と思うようには進まず。。。

■アプリケーションデリゲート OOP用語でいう「委譲」のGoFデザインパターンの1種 Facadeパターンと同じで、複数のクラスを1つにまとめた(見せかけ)て利用する。

Appleのドキュメントには、以下のように記載されている。

アプリケーションの上位レベルの動作を監視するのは、 デベロッパが提供するカスタムオブジェクトである、アプリケーションデリゲートオブジェクトの責任です。 デフォルトのUIApplicationオブジェクトなどの複雑なUIKitオブジェクトのサブクラス化を避けるために使用されるメカニズムです。

UIkitの面倒な処理を、一任できるようだ(という言い回しは曖昧だw)

#import 

@class UntitledViewController;

@interface UntitledAppDelegate : NSObject  {
    UIWindow *window;
    UntitledViewController *viewController;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UntitledViewController *viewController;

@end

基本的にX-codeでプロジェクトを選ぶと自動生成してくれるので、 あまり意識するクラスではないかもしれないのかな?

ただ、アプリケーション固有の実装が必要になった時に、 本質を理解しておく必要はあるかも知れない。 今は、あまり深く追求せずに先へ進もうw

ちなみに、ソースのUIApplicationDelegateの上で、option + ダブルクリックすると「UIApplicationDelegate.h」のソースを見る事ができ、 iPhoneOSに特化した面倒くさい宣言が数々記述されている。

■InterfaceBuilderのショートカット コマンド + 1 : Attributes コマンド + 2 : Connections コマンド + 3 : Size コマンド + 4 : Identity

■RoundButtonのタッチイベント ボタンクリックのイベントは、ボタン内で指を離す「Touch Up Inside」が基本。 これはiPhone特有かな?と思ったけど、考えてみればブラウザやその他アプリケーションも、「Click」ではなく「Click Up Inside」の動作をしている気がする。