Получатель ClassName является классом пересылки, и соответствующий @interface может не существовать - PullRequest
13 голосов
/ 07 марта 2009

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

Чтобы даже иметь возможность компилировать, я делаю @class UIPickerTable, и, очевидно, он хочет, чтобы я # включил его.

Мне интересно, есть ли способ обойти это предупреждение.

ТИА!

Ответы [ 6 ]

48 голосов
/ 04 апреля 2010

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

5 голосов
/ 07 марта 2009

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

@interface FacesViewController : NSObject {
}

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

1 голос
/ 04 января 2010

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

0 голосов
/ 04 апреля 2013

Такого рода вещи случаются, когда правильные заголовки иногда не импортируются. Например, при попытке установить NSManagedObjectContext вы можете получить это, не импортируя #import <CoreData/CoreData.h>

0 голосов
/ 01 августа 2009

Возможно, я здесь полностью упускаю из виду, но я столкнулся с чем-то похожим с 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 голосов
/ 07 марта 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...