Получатель 'Имя класса' является классом переадресации, и соответствующий @interface не может существовать

В этом случае ответ Виллема должен работать очень хорошо, но альтернативой, которая также может быть полезна в более сложных случаях, является использование -XScopedTypeVariables

, если вы добавляете строку {-# LANGUAGE ScopedTypeVariables #-} к вершине файл, ваш код должен скомпилироваться.

Расширение позволяет ссылаться на переменные типа из внешней области видимости во внутренней области видимости. в вашем коде a затеняется в теле функции, и нет связи между ним и внешним a, что приводит к потере контекста Bounded a!

13
задан Srikar Appalaraju 16 August 2012 в 08:16
поделиться

5 ответов

Я не думаю, что можно подавить то предупреждение с параметром компилятора. Вы могли заставить его уйти путем простого создания собственного заголовочного файла для класса, содержа:

@interface FacesViewController : NSObject {
}

я предполагаю, что само собой разумеется, что наличие Вашего приложения зависит от внутренней структуры класса UIKit, вероятно, не лучшая стратегия. По-видимому, у Вас есть серьезное основание для того, чтобы слоняться без дела в UIPicker...

5
ответ дан 1 December 2019 в 17:31
поделиться

Используя частные API в приложении для iPhone основания для отклонения от AppStore (функция обнаружения близости Google, не противостоящая). Если Вы не планируете только использовать программное обеспечение сами, не используйте частные API. Если нет никакого способа сделать то, что Вы хотите, не обращаясь к частным API, регистрируете ошибку на радаре Apple .

0
ответ дан 1 December 2019 в 17:31
поделиться

Я могу полностью упустить суть здесь, но с AddressBook я наткнулся на нечто подобное. Я включил структуру AddressBook примерно так

#import <AddressBook/ABAddressBook.h>

Но когда я хотел проверить класс выбранной записи в peoplePickerView ..

NSArray *selected = [peoplePickerView selectedRecords];
for(id record in selected)
{
if([record isKindOfClass:[ABPerson class]])
{
    return [record valueForKey:@"identityUniqueId"];
}

}

... я получил предупреждение, что "получатель 'ABPerson' является прямым классом и соответствующий @interface может не существовать ". Однако это оказалось легко исправить, изменив заголовочный файл:

#import <AddressBook/ABAddressBook.h>
#import <AddressBook/ABPerson.h>
@class ABPerson;
0
ответ дан 1 December 2019 в 17:31
поделиться

Импорт класса против использования директивы @class решит это предупреждение. Помните, что @class не сообщает компилятору, что есть "сигнатурные" методы/классы, а просто говорит, что класс существует, поэтому не ошибайтесь. Вдаваясь в подробности, используйте импорт "...", чтобы включить в него заголовок / интерфейс для класса.

.
1
ответ дан 1 December 2019 в 17:31
поделиться

Возможно, у вас есть @class UIPickerTable в вашем .h файле, а у вас нет #import UIPickerTable.h в вашем {RootViewController} .m файле

48
ответ дан 1 December 2019 в 17:31
поделиться