【发布时间】:2016-06-09 03:26:28
【问题描述】:
我正在尝试创建一个用 Objective-C 编写的单例类的实例。我必须遵守它的委托协议。 Swift 实现看起来像这样:
class SomeClass: ManagerDelegate {
let manager = Manager.sharedInstance()
func someFunction(){
manager.delegate = self
}
}
Objective-C 单例类看起来像这样:
// header
@protocol ManagerDelegate <NSObject>
@required
-(void)delegateMethod;
@end
@interface Manager : NSObject {
}
+ (id)sharedInstance;
@property (nonatomic, assign) id delegate;
@end
// class file
+ (id) sharedManager{
static Manager *theSharedManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
theSharedManager = [[self alloc] init];
});
return theSharedManager;
}
- (void) someInternalMethod{
[delegate delegateMethod];
}
在指定委托 (manager.delegate = self) 后,我收到错误消息
对成员“代表”的模糊引用
Objective-C 类的格式是否不正确,还是我执行不正确?我还缺少其他东西吗?
【问题讨论】:
-
你说“Objective-C 单例类看起来像这样”;单例是仅继承自
NSObject还是也继承自其他对象? -
我设置了一个仅继承自 NSObject 的测试,但仍然收到不明确的引用错误。
-
我不知道这是否有助于解决 Swift 代码的问题,但 Objective-C 类中的
delegate属性应声明为@property (nonatomic, weak) id<ManagerDelegate> delegate;。
标签: objective-c swift delegates