自定义类在iOS 8.1模拟器上识别,但在iOS 7.1模拟器上无法识别

时间:2014-12-29 12:42:15

标签: ios iphone xcode6 ios-simulator unrecognized-selector

我已经定义了一个名为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设备来测试它。

1 个答案:

答案 0 :(得分:0)

根据提供的信息,您似乎已将searchView插座连接到UIView对象而不是SearchView对象。