使用CWLSynthesizeSingleton.h时的内存问题

时间:2013-04-24 21:59:57

标签: cocoa singleton

我正在使用CWLSynthesizeSingleton.h来创建单身人士。但是在分析Xcode中的源代码时,它显示了这个错误:

Object with a +0 retain count returned to caller where a +1 (owning) retain count is expected

在这一行

CWL_SYNTHESIZE_SINGLETON_FOR_CLASS_WITH_ACCESSOR(MyManager, sharedManager)

我不在这个项目中使用ARC。有什么建议如何解决?它应该忽略它吗?

1 个答案:

答案 0 :(得分:0)

简单回答:不要使用该代码,它已经过时且不再推荐了。这些天创建单身人士的正确方法是使用dispatch_once

+ (instancetype)sharedInstance
{
    static dispatch_once_t once;
    static id sharedInstance;
    dispatch_once(&once, ^{
        sharedInstance = [(id)[super alloc] init];
    });
    return sharedInstance;
}

如果您想阻止您的类的用户直接分配实例,请在标题中使用unavailable编译器属性,以获取您不希望调用的方法:

+ (instancetype)alloc __attribute__((unavailable("alloc not available, call sharedInstance instead")));
- (instancetype)init __attribute__((unavailable("init not available, call sharedInstance instead")));
+ (instancetype)new __attribute__((unavailable("new not available, call sharedInstance instead")));