次のように、CTFontRef を保持するシングルトンを持つ標準の最新のシングルトン クラスを使用しています。
@interface MySingleton : NSObject {
CTFontRef paintingFont;
}
@property (readonly) CTFontRef paintingFont;
@end
@implementation MySingleton
+ (MySingleton*)sharedInstance
{
static dispatch_once_t once;
static MySingleton *sharedInstance;
dispatch_once(&once, ^{
sharedInstance = [[self alloc] init];
//NB
sharedInstance->paintingFont =
CTFontCreateWithName(CFSTR("Helvetica"), 80.0, nil);
});
return sharedInstance;
}
@end
それから他の場所で私は電話します[[MySingleton sharedinstance] paintingFont]
。
ただし、この呼び出しは、次のようnil
に前にアンダースコアを挿入するまで戻ります。paintingFont
sharedInstance->_paintingFont =
CTFontCreateWithName(CFSTR("Helvetica"), 80.0, nil);
どうしてこれなの?コンパイラはアンダースコアを含めるように要求するべきではありませんか? そうでない場合、以前のバージョンの目的は何ですか? そして、このアンダースコアはどこから来たのでしょうか? そもそもアンダースコアを使用してプロパティを宣言したことはありません。デバッガー ウィンドウの変数名にこれらの一見ランダムな挿入が表示されるだけです。