Не может инициализировать параметр, и я не понимаю, почему

StackOverflow https://stackoverflow.com/questions/8308427

  •  25-10-2019
  •  | 
  •  

Вопрос

Я получаю эту ошибку:

Cannot initialize a parameter of type 'id<ZXingDelegate>'
with an lvalue of type 'FirstViewController *const __strong'

Из этой строки кода:

ZXingWidgetController *widController =
    [[ZXingWidgetController alloc] initWithDelegate:self showCancel:YES
                                                           OneDMode:NO];

Как я могу решить это?

Это было полезно?

Решение

Благодаря комментарию МакМаде мне удалось решить проблему. Я должен был написать это таким образом:

ZXingWidgetController *widController =
    [[ZXingWidgetController alloc] initWithDelegate:***(id)** self showCancel:YES 
                                                                     OneDMode:NO];

Где (ID) - это мосточный актерский состав, о котором он говорил.

Другие советы

Используйте эту строку от кода для этого вопроса

ZXingWidgetController *widController = [[ZXingWidgetController alloc] initWithDelegate:(id<ZXingDelegate>)self showCancel:YES OneDMode:NO];

Если я правильно понимаю, проблема не в том, что вам нужен мостовый актерский состав, скорее ваш класс FirstViewController не определяет класс интерфейса ZXINGDELEGATE, таким образом, проблема.

ZXINGDELEGATE (на основе имени) интерфейс класс интерфейса (протокол или делегирован), который объявляет функции (интерфейс), которые должны определяться классом, которые наследуют его (если они не являются @Optional). Что-то вроде чисто-виртуальных (абстрактных) классов в C ++.

Так что в вашем файле заголовка вам понадобится что -то вроде этого:

@interface FirstViewController : UIViewController <ZXingDelegate>

И в вашем файле .m что -то вроде этого:

@implementation FirstViewController

//......
-(void) SomeFunctionThat_ZXingDelegate_declares
{
    // .... do something here....
}
//......


@end
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top