0

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

对不起,我是该网站的新手。如何获取崩溃日志和堆栈?谢谢。

4

2 回答 2

1

编辑:虽然这个答案在技术上是正确的,但它根本没有回答这个问题:(对不起


<警告-这是一个猜测>

如果您在设置标签文本时遇到崩溃,那么它会告诉我您过去已经为标签设置了一个值,但它没有被正确保留。

我猜你有这样的代码:

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)];

(第一个使用该属性保留标签。第二个不自动释放它。第一个是推荐的方式)

于 2011-01-04T11:18:14.353 回答
1

仔细检查您在 IB 中设置标签的连接。
在调试器中放置断点 label.text = @"Hello World!";
并确保 label 在这里不是 nil 。
如果它是 nil 你没有在 IB 中为它设置连接。

于 2011-09-18T19:20:32.387 回答