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 は、init/dealloc を除いて、プロパティとして宣言しているため、常にプロパティ (self.statusText など) としてアクセスする必要があります。

于 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 に答える