非常简单的iPhone应用程序在UILabel settext上崩溃

时间:2011-01-04 10:28:24

标签: iphone ios crash uilabel settext

我有一个非常简单的应用程序。我在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];
}

抱歉,我是网站新手。如何获取崩溃日志和堆栈?感谢。

2 个答案:

答案 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中为它设置连接。