我的单例访问器方法通常是以下的一些变体:
static MyClass *gInstance = NULL;
+ (MyClass *)instance
{
@synchronized(self)
{
if (gInstance == NULL)
gInstance = [[self alloc] init];
}
return(gInstance);
}
Run Code Online (Sandbox Code Playgroud)
我可以做些什么来改善这个?
我希望[super class]返回超类的类,但我发现,使用此代码返回此类的类.
码
NSLogObject([self class]);
NSLogObject([super class]);
NSLogObject([self superclass]);
NSLogBool([self class] == [super class]);
Run Code Online (Sandbox Code Playgroud)
产量
[self class]: MainMenuScene
[super class]: MainMenuScene
[self superclass]: CCScene
[self class] == [super class]:[YES]
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么会这样吗?我希望它返回相同的值[self superclass].
Macros: ------- #define NSLogBool(i) NSLog(@"%s:[%@]", #i, (i) ? @"YES" : @"NO") #define NSLogObject(o) NSLog(@"%s:[%@]", #o, o)
美好的一天,朋友们.
从新手回来关于Obj-C的愚蠢问题:)
我正在尝试在Obj-C中实现单例设计模式:
@interface SampleSingleton : NSObject {
@private
static SampleSingleton* instance;
}
+(SampleSingleton*) getInstance;
Run Code Online (Sandbox Code Playgroud)
编译器返回错误:"在'静态'之前的预期说明符 - 限定符列表".
使用Xcode.
在这段代码中(func在接口中声明),告诉subj错误,站在带有'self'的字符串上.
+ (void) run: (Action) action after: (int) seconds
{
[self run:action after:seconds repeat:NO];
}
Run Code Online (Sandbox Code Playgroud)
什么......?