我有一个非常简单的应用程序。我在IB中有一个按钮和一个标签。我有onClick的IBAction,它在标签上调用setText。这个标签有一个出口。 IB中的一切都是相互联系的。它在模拟器中第一次崩溃应用程序。当我再次启动它时,它会设置文本。然后下次再次崩溃。它总是在实际设备上崩溃。这应该很简单,但我不确定我做错了什么。
感谢。
在我的.h文件中:
#import <UIKit/UIKit.h>
@interface UntitledViewController : UIViewController {
IBOutlet UILabel *label;
IBOutlet UIButton *button;
}
@property (nonatomic, retain) UILabel *label;
-(IBAction) onClick1: (id) sender;
@end
和.m:
- (IBAction) onClick1: (id) sender
{
//[label setText:@"Hello World!"];
label.text = @"Hello World!";
//[button setTitle:@"Clicked" forState:UIControlStateNormal];
}
抱歉,我是网站新手。如何获取崩溃日志和堆栈?感谢。
答案 0 :(得分:1)
编辑:虽然这个答案在技术上是正确的,但它根本没有回答这个问题:(对不起
&LT;警告 - 这是猜测&gt;
如果您在设置标签的文本时遇到崩溃,那么它会告诉我您在过去设置了一个标签值,但它没有被正确保留。
我猜你有这样的代码:
label = [[[UILabel alloc] initWithFrame:CGRectMake(0,0,10,10)] autorelease];
何时应该有像
这样的代码// Option 1
self.label = [[[UILabel alloc] initWithFrame:CGRectMake(0,0,10,10)] autorelease];
或
// Option 2
label = [[UILabel alloc] initWithFrame:CGRectMake(0,0,10,10)];
(第一个使用该属性保留标签。第二个不自动释放它。第一个是推荐的方式)
答案 1 :(得分:1)
仔细检查您在IB中为标签设置连接
将断点放在调试器的行上label.text = @“Hello World!”;
并确保标签在这里不是零
如果它是零则你没有在IB中为它设置连接。