警告从不兼容的类型_Nonnull分配_Nullable,但更改修饰符不执行任何操作

时间:2015-11-02 18:38:28

标签: objective-c types protocols compiler-warnings objective-c-nullability

我有一个定义以下方法的协议:

- (MyObj * _Nonnull)initWithManagedObject:(NSManagedObject * _Nonnull)managedObject dataManager:(id<DataManagerProtocol> _Nonnull)dataManager;

实现它的类有一个属性:

@property (nonatomic, weak, readonly) id<DataManagerProtocol> dataManager;

该方法的实现如下:

- (MyObj *)initWithManagedObject:(NSManagedObject *)object dataManager:(id<RHDataManagerProtocol>)dataManager
{
    // TEST
    self = [super init];
    if (self) {
        // Both the following lines cause the warning.
        // Changing nullability has no effect.
        self.dataManager = dataManager;
        //_dataManager = dataManager;
    }
    return self;
}

这是确切的警告:

  

分配给&#39; id _Nullable&#39;来自不兼容的类型&#39; __ strong id _Nonnull&#39;

改变可空性  什么都不做。

编辑:我在.m文件中有以下类扩展名:

@interface MyObj ()

@property (nonatomic, weak) id<DataManagerProtcol> dataManager;

@end

2 个答案:

答案 0 :(得分:0)

原来这是一个Xcode错误。当我下次启动项目时(重新启动计算机后),错误自行解决。

答案 1 :(得分:0)

~.delegate = (id)self;

可以解决这个问题。