我已经定义了一个名为SearchView的自定义类,它有一个名为“setup”的方法。
// SearchView.h
@interface SearchView:UIView
- (void)setup;
@end
我已将它作为子视图添加到InterfaceBuilder中的MainViewController,并在身份检查器中将其自定义类字段设置为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 - 没有变化。 我记录了这个ivar的课程
- (void)ViewDidLoad
{
NSLog(@"searchClass class: %@",NSStringFromClass([self.searchView class]));
[self.searchView setup];
}
似乎在sim'7.1上运行时会记录
self.searchView: <UIView: 0x7916f540; frame = (50 0; 234 50); autoresize = RM+BM; layer = <CALayer: 0x7916e360>>
但是在8.1 sim'我得到了
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转换为此特定模拟器? 我没有任何可用的iOS 7 iPhone设备来测试它。
答案 0 :(得分:0)
根据提供的信息,您似乎已将searchView插座连接到UIView对象而不是SearchView对象。