我有一个定义以下方法的协议:
- (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
答案 0 :(得分:0)
原来这是一个Xcode错误。当我下次启动项目时(重新启动计算机后),错误自行解决。
答案 1 :(得分:0)
~.delegate = (id)self;
可以解决这个问题。