このシリーズも今回4回目。
継続していて気が付いたことは、アプリの製作は文法の学習とはまた異なった知識が必要だということ。
前回扱った内容はまさにそれで、メニューイベントを管理するクラスをどこに置くか?という話題で、ある程度凝ったアプリならば、NSWindowController の派生クラスに置くのがいいのでは、みたいな話をした。
答えが複数あり、状況によって最適解を探す、というのは、プログラミングに限らず、習得するのが難しい領域の一つなんでしょうね。
前置きはともかく、今回は、特定のクラスが必要になったとき、それを Objective-C でどう構成するかという話。
イニシャライザでインスタンスを返す
どう構成するかはひとまず置いて、定型的な書き方の復習。
@interface Hoge : NSObject
-(nullable instancetype) initHoge;
@end
@implementation Hoge
-(nullable instancetype) initHoge;
{
self = [super init];
if(self)
{
//初期化処理
}
return self;
}
@end
この書き方、昔は無茶苦茶違和感あったけど、最近慣れたな。
なお、initXxx は init family とかイニシャライザなどと言われ、クラスの初期化を受け持つメソッド。
init 以下に適当な文字(列)をつけるが、最初の文字は大文字にする必要がある。
だから、initialize は init familiy ではない。
以前に他人のコードを読んでいたとき、同一クラス内で init と initialize が同居していて「は?」と思ったのだが、そういうことらしい。
(続く)

