从另一个类调用getter方法

Jor*_*anD 1 iphone objective-c uiviewcontroller ios

当我尝试从另一个类调用getter方法"gender"和"teamName"时(通过创建TeamsViewController类的实例并调用该实例上的方法),这些方法返回null.为什么是这样?

谢谢你的帮助.

@interface TeamsViewController () {
    NSString *teamName;
    NSString *gender;
}
@end

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    gender = @"boys";
    teamName = @"Basketball";
}

-(NSString *)gender {
    NSLog(@"returning %@",gender);
    return gender;
}
-(NSString *)teamName {
    NSLog(@"returning %@",teamName);
    return teamName;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    if (onBoys==true) {
        gender = @"boys";
    }
    else {
       gender = @"girls";
    }

    [self performSegueWithIdentifier:@"teamsPushSegue" sender:self];
}



TeamsViewController *teamsInstance = [[TeamsViewController alloc]init];     
[teamsInstance gender];
Run Code Online (Sandbox Code Playgroud)

tro*_*foe 5

使用以下命令创建类的实例:

TeamsViewController *teamsInstance = [[TeamsViewController alloc] init];
Run Code Online (Sandbox Code Playgroud)

不会调用viewDidLoad初始化这些实例变量的方法.

而是在init方法中初始化它们:

- (id)init {
    self = [super init];
    if (self) {
        gender = @"boys"; 
        teamName = @"Basketball";
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

但是,您可能想要覆盖的方法是initWithNibName:bundle:,您可能希望完全避免调用该init方法.