访问从方法中设置的属性到另一个方法的值

时间:2012-05-02 04:44:09

标签: iphone objective-c ios xcode

我想在此委托方法中获取resulPoints的值

- (void)perksDetailsViewController:(PerksDetailsViewController *)sender didPassRequiredPoints:(NSNumber *)requiredPoints withCard:(Card *)selectedCard 
{

    double perksPoints = [requiredPoints doubleValue];

    self.resultingPoints = [NSNumber numberWithDouble:[selectedCard subtractPoints:perksPoints] ];

    NSLog(@"points remaining %@", self.resultingPoints);
}

这很好但是当我尝试访问下面方法中的resulPoints时,resulPoints有一个空值,正如我所放置的NSLog所说的那样。

- (void) didPressDone:(id)sender {

    PointsResultsViewController *pointsResults = [self.storyboard instantiateViewControllerWithIdentifier:@"resultsPointsVC"];

    [self.navigationController pushViewController:pointsResults animated:YES];

    pointsResults.leftPointsLabel.text = [self.resultingPoints stringValue];

    NSLog(@"hey points left is%@", self.resultingPoints);
}  

从第一种方法获取resulPoints值的好方法是什么? 提前谢谢。

修改: 记录输出

2012-05-02 15:47:48.297 CardWallet [22196:f803]积分剩余900

2012-05-02 15:47:49.291 CardWallet [22196:f803]嘿点是(null)

1 个答案:

答案 0 :(得分:1)

上次评论:

  

这是属性声明@property (nonatomic, weak) NSNumber *resultingPoints;

这可能是您问题的根源。弱属性将被释放并设置为nil如果没有其他东西保留它,这就是这种情况。使它成为一个强大的属性,当你推动新的视图控制器时它仍然存在。

根据您在聊天中提供的详细信息,您实际上正在处理此类的两个不同实例。一个在屏幕上,一个用作代表。

分配代理时,必须确保它与屏幕上的对象相同。当segue的目标视图控制器是即将出现的视图控制器时,最好在prepareForSegue中完成。