0

次のメソッドを定義するプロトコルがあります。

- (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;
}

これは正確な警告です:

互換性のない型 '__strong id _Nonnull' から 'id _Nullable' に割り当てています

nullability を変更しても何も起こりません。

編集: .m ファイルに次のクラス拡張子があります。

@interface MyObj ()

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

@end
4

2 に答える 2

0

これは Xcode のバグであることが判明しました。次にプロジェクトを開始したとき(コンピューターを再起動した後)、エラーは解決しました。

于 2015-11-03T14:04:42.443 に答える