台风 1.7.2:XML 注入 - 无法解析 class

Typhoon 1.7.2: XML Injection - Unable to resolve class

免责声明:我知道这是 Typhoon 的一个相当旧的版本,但我正在尝试将 Swift class 添加到现有的 Objective-C 代码库中,并且我'我很好奇这是否可行(理论上,我认为应该可行)。

我有以下 Swift Cocoa class:

import Cocoa

public class MyClass: NSObject {

}

我想将它用作 Objective-C class:

中的依赖项
@interface DependentClass()

@property (nonatomic, strong, readonly) MyClass *myClass;

@end

- (instancetype)initWithMyClass:(MyClass *)aClass {
    self = [super init];
    if (self) {
        _myClass = aClass;
    }
    return self;
}

在我的 XML 配置中,我注册了组件,并且从属 class:

<component class='MyClass' key='myClass' scope='singleton'>
</component>

<component class='DependentClass' key='dependentClass' scope='singleton'>
    <initializer selector='initWithMyClass:'>
            <argument parameterName='myClass' ref='myClass'/>
    </initializer>
</component>

当我启动应用程序时,它在解析 myClass 时崩溃:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Class 'MyClass' can't be resolved.'

有没有办法让它工作?据我所知,我唯一要做的就是使 MyClass 成为 NSObject subclass(我的子类化或使用 @objc)。

这会起作用,但是 Swift class 的名称将被自动命名空间化为 app/frameworkname.ClassName。

您可以在运行时使用 NSStringFromClass(MyClass.self)

进行测试