尽管在标头中使用了'__attribute __((不可用))',但在实现中使用new

时间:2018-02-03 19:06:40

标签: objective-c

我有一个对象的标题,其中新标记为不可用且正确(因为它应该是单例)

@interface Manager : NSObject <NSCopying>

+ (instancetype)new NS_UNAVAILABLE;

- (instancetype)init NS_UNAVAILABLE;

+ (instancetype)sharedInstance;

@end

.......现在这对外界来说是正确的,但经理本身的@implementation应该免于此....我希望它能够调用[self new]

e.g。我想要

@implementation Manager 

+ (instancetype)shared {
    static id shared = nil;
    if(!shared) {
        shared = [self new];
    }
    return shared;
}
@end

请注意这是一个例子,这不是关于单身人士的。我想打电话给新人,即使它是被禁止的,上面是一个例子

可能的解决方案:

  1. 我可以以某种方式覆盖不可用性属性吗? (优选的)
  2. 只需拨打[super new]
  3. 即可

1 个答案:

答案 0 :(得分:1)

您可以转换为new,然后您可以毫无问题地发送消息shared = [(id)self new];

[super new]

如果您的课程没有new的实施,您也可以使用task del 1,2,3