0

我正在尝试测试(而不是运行)我的应用程序,但出现以下错误:

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

它指向我的视图控制器的 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 中“无”messageTextView。

我不知道到底出了什么问题,因为当我运行它时它工作正常,它只在测试期间失败。

很感谢任何形式的帮助!

真挚地,

佐利

4

1 回答 1

1

首先,您不需要分配/初始化一个被引用的视图IBOutlet(它由您的 xib / 情节提要自动实例化)。

现在,您真正应该做的是将视图自定义移动到viewDidLoad方法中,因为未加载视图层次结构init(因此实际上您的所有视图都nil在那个时候)。当您第一次尝试访问层次结构中的一个视图时,它会被加载。

所以基本上你可以做这样的事情:

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

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

于 2012-09-13T12:40:06.203 回答