尽管被初始化,int仍被设置为null

时间:2012-02-28 23:12:14

标签: iphone objective-c ios cocoa-touch memory-management

我有这个int我在我的.h文件中声明这样:

@interface searchResultsViewController : UIViewController {
  int selectedEvent;
}

@property (nonatomic) int selectedEvent;

它保存表中的选定行。当用户点击该行时,int设置在此处:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    self.selectedEvent = [indexPath row];
}

然后在这里传递给这个方法:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if ([segue.identifier isEqualToString:@"detailView"]) {
        NSLog(@"%@", self.selectedEvent);
    }
}

但是,在该方法中,NSLog返回null。我没有在文件的任何其他部分编辑int,我@synthesize在文件的顶部。我不确定发生了什么,有人可以解释一下吗?

由于

1 个答案:

答案 0 :(得分:4)

int不是对象,因此当您使用%@时,计算机会在int所设置的内存地址处查找内容,并在找到时没有,返回null。要记录int使用%d。像这样:

NSLog(@"%d", self.selectedEvent);

对象(%@NSStringNSDictionary等)的其他有效类型为NSArray%fdouble%u的{​​{1}}等等。

更多信息here