【问题标题】:Switching view controllers crashes with an uncaught exception切换视图控制器会因未捕获的异常而崩溃
【发布时间】:2010-05-31 09:50:22
【问题描述】:

我试图在我的 iPhone 应用程序中的视图控制器之间切换视图,但它崩溃了。 基本上我是从 mainScreen 切换到 test。

我在调试器中遇到错误:

0x01d6a000  <+0000>  push   %ebp
0x01d6a001  <+0001>  mov    %esp,%ebp
0x01d6a003  <+0003>  int3   
0x01d6a004  <+0004>  leave  (HIGHLIGHTED)
0x01d6a005  <+0005>  ret    
0x01d6a006  <+0006>  nopw   %cs:0x0(%eax,%eax,1)

mainscreen.h

#import <UIKit/UIKit.h>

@interface MainScreen : UIViewController {

}

-(IBAction)btnFirstPage:(id)sender;

@end

mainscreen.m

#import "MainScreen.h"
#import "test.h"

@implementation MainScreen

-(IBAction)btnFirstPage:(id)sender{

 test1 = [[test1 alloc] 

    initWithNibName:@"test"  (test may not respond to -alloc)

    bundle:nil];

    [self.view addSubview:test1.view];

/* etc. */

test.h

#import <UIKit/UIKit.h>

@interface test : UIViewController {
}

@end

【问题讨论】:

    标签: iphone objective-c uncaught-exception


    【解决方案1】:

    这看起来很奇怪:test1 = [[test1 alloc] ...]。您正在将alloc 消息发送到一个变量,我假设它最初是空指针,因此被悄悄地忽略了。您应该在 test1 的类类型上调用 alloc,而不是 test1 本身。

    【讨论】:

      【解决方案2】:

      test1 = [[test alloc] initWithNibName:@"test" undle:nil]; //这里必须是测试。不测试1

      当你从类创建对象时,你必须使用 NSObject 类中的 alloc 和 allocWithZone 静态方法。所以你必须使用类名。不是变量名。(test1)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多