Cocoaに静的変数が必要です。
Objective-Cでクラスレベルのプロパティを宣言するにはどうすればよいですか?、これまで私がいつもやってきたことに何か問題があるかどうかはわかりません。
// Foo.m
static NSString* id;
@interface Foo ()
それ以外の
// Foo.h
@interface Foo {
}
+(NSString*) id;
// Foo.m
+(NSString*) id
{
static NSString* fooId = nil;
if (fooId == nil)
{
// create id
}
return fooId;
}
明らかに、2番目のアプローチはIDを初期化する機会を提供します。しかし、コード内の別の場所でIDを自分で初期化すると、次のようになります。
-(NSString*) getId
{
if (id==nil) {
id = ... // init goes here
}
return id;
}
それでは、より複雑なクラス関数アプローチとは対照的に、単純な静的宣言アプローチに何か問題がありますか?私は何が欠けていますか?