Я пытаюсь создать экземпляр одноэлементного класса, написанного в 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' или он наследуется от какого-то другого объекта? – Paulw11
Я устанавливаю тест, который наследует только от NSObject и все еще получает неоднозначную ошибку ссылки. –
Я не знаю, поможет ли это с кодом Swift, но свойство 'delegate' в классе Objective-C должно быть объявлено как' @property (неатомный, слабый) id delegate; '. –
rmaddy