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

Я в настоящее время пытаюсь найти a UIPickerTable в UIPickerView.subviews..., таким образом, я циклично выполняюсь через и делаю isKindOfClass:[UIPickerTable class] .... который работает.. но потому что заголовок UIPickerTable не выставляется, я получаю предупреждение, что "получатель 'UIPickerTable' является классом переадресации, и соответствующий @interface не может существовать'

Чтобы даже смочь скомпилировать, я делаю @class UIPickerTable и очевидно это want's меня к #include это.

Я задаюсь вопросом, существует ли способ обойти наблюдение этого предупреждения.

TIA!

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
поделиться