Я определил пользовательский класс с именем SearchView, который имеет метод с именем «setup».Пользовательский класс, распознанный на симуляторе iOS 8.1, но не на iOS 7.1 симуляторе
// SearchView.h
@interface SearchView:UIView
- (void)setup;
@end
Я добавил его к MainViewController в InterfaceBuilder как подвид и установить это настраиваемое поле класса в инспекторе идентичности как класс SearchView. Я подключил это к MainViewController:
// MainViewController.h
@interface MainViewController:UIViewController
@end
// MainViewController.m
#import "SearchView.h"
@interface MainViewController()
@property (nonatomic,strong) IBOutlet SearchView * searchView;
@end
@implementation MainViewController
- (void)ViewDidLoad
{
[self.searchView setup];
}
Это приложение является универсальным, поэтому у меня есть 2 раскадровки. Когда я запускаю это на симуляторе iPad, он хорошо работает для всех версий iOS. Но когда я запускаю это на симуляторе iPhone, он отлично подходит для iOS 8.1, но на 7.1 я получаю сообщение об ошибке, которое не приводит к сбою приложения.
-[UIView setup]: unrecognized selector sent to instance 0x78882660
Я попытался переместить его в ViewDidAppear - без изменений. я вошел класс этого Ивара
- (void)ViewDidLoad
{
NSLog(@"searchClass class: %@",NSStringFromClass([self.searchView class]));
[self.searchView setup];
}
и оказывается, что при запуске на сима «7.1 он записывает
self.searchView: <UIView: 0x7916f540; frame = (50 0; 234 50); autoresize = RM+BM; layer = <CALayer: 0x7916e360>>
но на 8,1 сим» я получаю
self.searchView: <SearchView: 0x79e35170; frame = (50 0; 234 50); autoresize = RM+BM; tag = 4444; layer = <CALayer: 0x79e349b0>>
Я стараюсь чтобы пометить вид, а затем называть его:
self.searchView = (SearchView*)[self.view viewWithTag:4444];
, но ошибка остается.
Кроме того, -ObjC уже добавлен к другим флагам компоновщика.
Что может быть причиной этой ошибки? почему это представление получает как UIView только для этого конкретного симулятора? У меня нет доступного устройства iPhone iOS 7 для его проверки.
Вы сказали, что добавили его в InterfaceBuilder, но почему у свойства нет IBOutlet? –
Не скопировать его правильно, я его отредактировал. – Got99Errors
У меня нет ответа, но «приведение» не имеет ничего общего с проблемой. Строки вашего журнала показывают, что это действительно другой вид объекта просмотра в этих двух случаях. Что такое родительский класс 'OPSearchView' (и как это отличается от' SearchView')? –