这是一个错误还是我的代码中有错误?

时间:2012-09-26 23:05:35

标签: ios xcode4 ios6

每当我将我的应用程序运行到“iPhone 6.0模拟器”中时,我都会遇到这种奇怪的行为。第一次,它将成功运行但第二次,它将崩溃并出现错误:

loaded the "IouView" nib but the view outlet was not set.'

这是可重复的,每隔一次,它会起作用,反之亦然,它会崩溃。这是我的应用程序结构:

在AppDelegate中:

self.iouViewController = [[IouViewController alloc] initWithNibName:@"IouView" bundle:nil];
    [iouViewController setIouTableArray:iouTableArray];
    navController = [[UINavigationController alloc] initWithRootViewController:self.iouViewController];
    [window setRootViewController:navController];

然后,在IouViewController.h中:

@property (strong, nonatomic) IBOutlet UITableView *iouTableView;

直到今天,我总是以编程方式编写我的视图(tableView等)。随着iPhone 5拥有4英寸屏幕,我决定停止与Apple战斗并使用IB和'自动布局'功能。

在我的IouView.xib中,这是结构:

Objects: 'View', 
  Referencing Outlets: view - File's Owner

Objects: 'View'->'Table View'
  Outlets: dataSource - File's Owner
  Outlets: delegate - File's Owner
  Referencing Outlets: iouTableView - File's Owner

视图中实际上有另一个表视图,但我没有在此处包含它。请帮忙,因为我迷路了如何继续!非常感谢你。

因为我可能没有正确地初始化我的视图控制器,所以把它扔掉那里,我注释掉'loadView'并将其用作init:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {

    }

    return self;
}

PS:我正在使用Apple LLVM 4.1和ARC启用的iOS 6 SDK上构建。

更新:来自IB的图片添加: image1 image2 image3 image4

还是迷路了,如果您需要更多代码,请告诉我。我用一个简单的导航控制器创建了一个新项目,它适用于那个新项目但不适用于我的项目。崩溃发生在模拟器上。

1 个答案:

答案 0 :(得分:-1)

我发现了一个不会让模拟器崩溃的解决方案。我只通过第一个视图。这是我做的“事情”。如果有人有见解,请让他们分享,并希望也能帮助其他人。特别感谢Carl Veazey的帮助。

我忘了提到的是,这段代码是在没有ARC的iOS4时代完成的。当我切换时,有很多变化。

根据Carl的建议,我看了一下'Build Phases' - > '编译源'并查看IouView.xib。所以,我删除了一个。我运行程序,它显示黑屏。最后,我看了main.m

原件:

@autoreleasepool {
    int retVal = UIApplicationMain(argc, argv, nil, nil);
    return retVal;
}

并将其更改为:

@autoreleasepool {
    return UIApplicationMain(argc, argv, nil, NSStringFromClass([IouApp2AppDelegate class]));
}

我必须#import我的AppDelegate。进行更改后,我可以多次运行该程序,但它没有崩溃。