台风 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)
进行测试
免责声明:我知道这是 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)