回忆和回应NSString

时间:2012-06-28 23:22:03

标签: ios nsstring nslog

你好我相信你们都可以回答这个问题,但是它因为我的愚蠢而烦恼了。

我有一个数组,可以存储didSelectRowAtIndexPath行,然后存储NSLog formatSelected。然后我弹出视图控制器并将formatSelected作为botton标题显示。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    NSString *formatSelected = [[NSString alloc]init];
    formatSelected:[format objectAtIndex:indexPath.row];
    NSLog(@"this is the format selected %@",formatSelected);
    [button2 setTitle:[format objectAtIndex:indexPath.row] forState:UIControlStateNormal];
    [navigationControler popViewControllerAnimated:YES];
}

工作正常。

我的问题是,在上一个视图中,新标题按钮是我有另一个按钮和标签。

我希望能够按下第二个按钮并在标签中显示formatSelected String或NSLog it

-(IBAction)printResults{
NSString *fmat = [[NSString alloc]initWithFormat:@"%@",formatSelected];
NSLog(@"%@",fmat);
    NSLog(@"nslong button pressed");}

但NSLog只显示(null)?

我有@property (nonatomic, retain) NSString *formatSelected;并合成了它。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

您在formatSelected方法中将tableView:didSelectRowAtIndexPath:声明为局部变量。在退出方法后,您在此方法中分配给formatSelected的任何内容都将无法访问。您将所选格式分配给此局部变量而不是您的属性(及其相应的实例变量)。

使用[self setFormatSelected:[format objectAtIndex:indexPath.row]];并完全删除NSString *formatSelected...行。

答案 1 :(得分:0)

您几乎总是希望将copy与NSString *一起使用,而不是retain。有关详细信息,请参阅此答案:NSString property: copy or retain?