0
#import "CLSViewController.h"

@implementation CLSViewController

@synthesize statusText = _statusText;

- (void)viewDidUnload {
    [self setStatusText:nil];
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

- (IBAction)buttonPressed:(UIButton *)sender {
    NSString *title = [sender titleForState:UIControlStateNormal];
->  statusText.text = [NSString stringWithFormat:@"%@ button pressed.", title];
}

@end

表示 statusText.text = ... 的行

我没有正确合成它吗?= _statusText;从中删除它可以消除错误,但我认为我们应该将其设置为某些东西。

4

2 回答 2

4

如果你想访问该属性,你应该使用

self.statusText.text = ....

您还可以使用 _statusText 直接访问变量:

_statusText.text = ....

如果您从综合行中删除 _statusText,实例变量名称将被假定为“statusText”,这就是您删除它时您的情况有效的原因。

@synthesize statusText
....
statusText.text = [NSString stringWithFormat:@"%@ button pressed.", title]; // this works

IMO 您应该始终将其作为属性(例如 self.statusText)访问,除非在 init/dealloc 中,因为您是这样声明的。

于 2012-11-20T18:02:22.013 回答
1

编码:

@synthesize statusText = _statusText;

表示 statusText 是您班级的公共字段, _statusText 是私有符号。因为所以你必须像这样修改你的代码:

self.statusText.text = [NSString stringWithFormat:@"%@ button pressed.", title];

或这个:

_statusText.text = [NSString stringWithFormat:@"%@ button pressed.", title];
于 2012-11-20T18:11:03.917 回答