Многоцелевое наследование библиотек Objective-C
Я расширяю пример NameAndPassword ( https://github.com/skycocker/NameAndPassword) и мне нужно получить доступ к методам IOBluetooth в этом файле реализации: https://github.com/skycocker/NameAndPassword/blob/master/NameAndPasswordPlugin.m
Интерфейс выглядит так:
@interface EXNameAndPassword : SFAuthorizationPluginView
Как я могу сделать это наследовать от CBCentralManagerDelegate
как в appdelegate:
@interface AppDelegate : NSObject <CBCentralManagerDelegate, CBPeripheralDelegate>
я нуждаюсь EXNameAndPassword
наследовать как от SFAuthorizationPluginView и CBCentralManagerDelegate и прочее. Я считаю, что это довольно легко, я просто начинающий obj-c. Я читал о композиции, но не могу заставить ее работать.
Что у меня есть сейчас
@interface EXNameAndPassword : SFAuthorizationPluginView <CBCentralManagerDelegate, CBPeripheralDelegate>
но я продолжаю получать предупреждения о несинтезированных свойствах - мне не нужно было синтезировать их в моем проекте, который не требовал SFAuthorizationPluginView
наследство, поэтому я думаю, что я делаю что-то не так.
2 ответа
У меня проблема.
@interface EXNameAndPassword : SFAuthorizationPluginView <CBCentralManagerDelegate, CBPeripheralDelegate>
отлично, я просто должен был отключить архитектуры, отличные от x86_64 в настройках сборки.
Источник: http://www.cocoabuilder.com/archive/cocoa/198573-property-problem.html
Предупреждение "Свойства не синтезированы" связано со свойствами, определенными в протоколе.
В классе @properties автоматически @synthesized в реализации, но в протоколе ответственность за синтезирующий класс несет ответственность, поэтому добавьте:
@synthesize protocolPropertyName = _protocolPropertyName;
в EXNameAndPassword.m