Похоже, не удается скомпилировать встроенную платформу chromium на Mac

#objective-c #chromium #xcode6 #chromium-embedded #osx-yosemite

#objective-c #chromium #xcode6 #chromium-встроенный #osx-yosemite

Вопрос:

Попытка скомпилировать встроенную платформу Chromium в Yosemite Developer Preview выдает мне несколько ошибок, связанных [NSApp setDelegate:self]; cefsimple_mac.mm с ошибкой:

cefsimple_mac.mm:93:22: Несовместимые типы указателей, отправляющие ‘SimpleAppDelegate *’ параметру типа ‘id’

Очевидно, что это не решение, но комментирование этого также приводит к большему количеству этих ошибок в коде.

Я посмотрел NSApp setDelegate в библиотеке предварительной версии для разработчиков Mac, и кажется, что она больше не работает так, как предполагалось в 10.10 (я не хочу говорить устаревшим, потому что у меня заканчивается память, и я просто знаю, что это было вычеркнуто).

Кто-нибудь знает, как я мог бы это исправить?

Ответ №1:

Я не пробовал CEF в 10.10, но похоже, что это изменение API NSApp в 10.10,

Вот аналогичная проблема в Qt:

https://bugreports.qt-project.org/browse/QTBUG-39644?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

Так что исправление, возможно, заменит

[NSApp setDelegate:self]

с

[[NSApplication sharedApplication] setDelegate:self];

Комментарии:

1. Теперь я получаю следующее: несовместимые типы указателей отправляют ‘SimpleAppDelegate *’ в параметр типа ‘id<NSApplicationDelegate>’ Очевидно, мне нужно получить делегат класса, но я не уверен, как это сделать.

2. Измените номер строки 14 на cefsimple_mac.mm из «@interface SimpleAppDelegate : NSObject» в «@interface SimpleAppDelegate: NSObject<NSApplicationDelegate>»