8
@interface Connections()
{
   static Connections *this;
}
@end

コンパイラエラーをスローする.mファイルの上記のコード

タイプ名では、ストレージクラスを指定できません

同時に

静的

キーワードが削除され、それはうまく機能します-それはとても明白です。目的:「Connections」インスタンスを静的およびプライベートにします。

この動作はなぜですか、助けてください。

4

1 に答える 1

18

Objective-C クラスでクラスレベルの変数を宣言することはできません。代わりに、実装ファイルでそれらを「隠す」必要があり、多くの場合、static外部からアクセスできないように -scope を指定します。

Connections.m:

#import "Connections.h"

static Connections *_sharedInstance = nil;

@implementation Connections

...

@end

これがシングルトンの場合は、通常、クラスレベルのアクセサーを定義して、最初の使用時にシングルトンを作成します。

+ (Connections *)sharedInstance
{
    if (_sharedInstance == nil)
    {
        _sharedInstance = [[Connections alloc] init];
    }
    return _sharedInstance;
}

(そして、.h ファイルに宣言を追加する必要があります):

+ (Connections *)sharedInstance;
于 2013-02-19T14:47:50.130 に答える