我有一个DataStore
在 Objective C 中定义的类。它有一个controller
type 属性Controller
(在 Swift 中定义的类)。两个类都在同一个目标中Foo
。当我尝试访问controller
class 中的属性时Baz
,出现错误:
“DataStore”类型的值没有成员“controller”
Baz
是用 Swift 编写的,并且在同一个 target 中Foo
。
DataStore.m
(目标Foo
)
#import <Foo/Foo-Swift.h>
@interface DataStore ()
@property (nonatomic, strong) Controller *controller;
@end
DataStore.h
(目标Foo
)
@class Controller;
@interface DataStore: NSObject
@property (readonly, strong, nonatomic) Controller *controller;
@end
Controller.swift
(目标Foo
)
@objc(NHController)
public class Controller: NSObject {
//
}
Baz.swift
(目标Foo
,曾经是另一个目标)
class Bar {
func test() {
let dataStore = DataStore()
dataStore.controller // compiler error
}
}
我尝试了十几次清洁和建造。我尝试清除派生数据,但没有做任何事情。我只是移动Bar
到Foo
目标。我访问DataStore
之前的属性没有问题(当Baz
在另一个目标中时。)
该问题与 Swift 和 Objective-C 之间的循环引用有关:https : //cjwirth.com/tech/circular-references-swift-objc
更新Controller.swift
修复它:
public typealias Controller = NHController
@objc public class NHController: NSObject {
//
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句