测试期间出现iOS错误

时间:2012-09-13 12:06:05

标签: ios unit-testing

我正在尝试测试(而不是运行)我的应用,但是我收到以下错误:

  

线程1:EXC_BREAKPOINT(代码= EXC_I386_BPT,子代码= 0x0)

它指向我的viewcontroller的initWithNibName中的一行。

@synthesize messageTextView;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) 
    {
        /*
        some code
        */
     //This is the line where the exception points:
     messageTextView = [[UITextView alloc]initWithFrame:CGRectMake(0, 306, 320, 110)];
        /*
        some other code
        */


    }
    return self;
}

我的viewcontroller的.h文件如下所示:

@interface SMMenuViewController : UIViewController <UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate ,UITextViewDelegate> 
{
        /*
        some code
        */

}

@property (retain, nonatomic) IBOutlet UITextView *messageTextView;

我还在viewDidUnload中“nil”messageTextView。

我不知道到底出了什么问题,因为它在我运行时效果很好,它只在测试期间失败。

非常感谢任何帮助!

此致

佐利

1 个答案:

答案 0 :(得分:1)

首先,您不需要分配/初始化引用为IBOutlet的视图(它由xib / storyboard自动实例化)。

现在,你应该做的是在viewDidLoad方法中移动视图自定义,因为init上没有加载视图层次结构(所以你的所有视图实际上都是nil时间)。首次尝试访问层次结构中的某个视图时会加载它。

所以基本上你可以这样做:

- (void)viewDidLoad
{
    [self.messageTextView setFrame:CGRectMake(0, 306, 320, 110)];
}

我希望这是有道理的......