我正在尝试测试(不是运行)我的应用程序,但出现以下错误:
Thread 1: EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0)
它指向我的 View Controller 的 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;
}
我的 View Controller 的 .h 文件如下所示:
@interface SMMenuViewController : UIViewController <UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate ,UITextViewDelegate>
{
/*
some code
*/
}
@property (retain, nonatomic) IBOutlet UITextView *messageTextView;
我还在 viewDidUnload 中“nil”messageTextView。
我不知道到底出了什么问题,因为当我运行它时它工作正常,它只在测试期间失败。
非常感谢任何帮助!
真诚的,
佐利
最佳答案
首先,您不需要分配/初始化被引用为 IBOutlet
的 View (它由您的 xib/Storyboard 自动实例化)。
现在,您真正应该做的是将 View 自定义移动到 viewDidLoad
方法中,因为 View 层次结构未在 init
上加载(因此实际上您的所有 View 都是nil
到那时)。当您第一次尝试访问层次结构中的某个 View 时,它会被加载。
所以基本上你可以做这样的事情:
- (void)viewDidLoad
{
[self.messageTextView setFrame:CGRectMake(0, 306, 320, 110)];
}
我希望这是有道理的......
关于iOS 测试时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12405873/