【发布时间】:2014-10-02 14:54:14
【问题描述】:
我有一个只能在 iphone 中运行的项目,适用于版本 4、5 和 6。在我的情况下,我使用的是 xib 文件,在这种情况下,我使用 xib 文件创建了一个名为 ViewController 的类,然后再创建了三个 xib 文件,导致您具有以下结构:
ViewController.h
ViewController.m
ViewController.xib
ViewController4inch.xib
ViewController47inch.xib
ViewController55inch.xib
在我的 ViewController.m 中,我将这段代码放在 ViewDidLoad 中,以识别 iphone 的版本并将视图更改为用户:
- (void)viewDidLoad {
[super viewDidLoad];
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
ViewController *extratoVC = [[ViewController alloc] init];
if([UIScreen mainScreen].bounds.size.height == 480){
// 4-4s
extratoVC = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
}
if([UIScreen mainScreen].bounds.size.height == 568){
// 4-inch
extratoVC = [[ViewController alloc] initWithNibName:@"ViewController4inch" bundle:nil];
}
if([UIScreen mainScreen].bounds.size.height == 667){
// 4.7-inch
extratoVC = [[ViewController alloc] initWithNibName:@"ViewController47inch" bundle:nil];
}
if([UIScreen mainScreen].bounds.size.height == 736){
// 5.5-inch
extratoVC = [[ViewController alloc] initWithNibName:@"ViewController55inch" bundle:nil];
}
[self presentViewController:extratoVC animated:YES completion:nil];// this line causing problem that you see below...
}
}
不幸的是,此代码不起作用,我收到以下错误消息:
Thread1: EXEC_BAD_ACCESS (code = 2, address = 0xbf72bfbc)
在我的项目中,所有视图都将由类处理 ViewController.h / .m
就我而言,我正在处理 .xib 文件并且不想使用情节提要,有人知道为什么会出现这个问题以及如何解决它吗?
【问题讨论】:
-
这不是好的做法。为什么不使用带约束的自动布局?
-
在 if 语句上设置断点并单步执行时会发生什么?它通过异常在哪一行?
-
想象一下,如果您尝试在 Android 应用程序中执行此操作会发生什么。这是否让您了解为什么这可能是一个坏主意?
标签: ios objective-c iphone xcode uiviewcontroller