Многоцелевое наследование библиотек 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

Другие вопросы по тегам