NSNumber超出范围

时间:2012-02-24 10:01:21

标签: iphone objective-c ios nsnumber

我无法弄清楚为什么我的NSNumber被认为超出了范围。这是我的代码的简单版本:

viewController.m

NSNumber *mean;
[statistics calculateMean:mean];
NSLog(@"%@ is the mean", mean);
//^on this line I get the error: "Program received signal:  “EXC_BAD_ACCESS”."
//and when I hover over object it says "out of scope".

statistics.m

+ (void)calculateMean:(NSNumber*)MeanEst
{
    MeanEst = [stepFunc meanOfArray:sub_values]; 
    //meanOfArray returns an NSNumber*
}

任何帮助将不胜感激!

编辑:我正在努力将matlab代码移植到objective-c。 matlab代码是我没有编写的代码,我不会真正使用这个Objective-c代码。这是别人的项目。所以我试图以尽可能类似于matlab代码的方式编写它。在matlab代码中,有一个定义为“function [mean_est,sig] = mean_est(candEventTimes)”的函数。因为我不能返回两个对象,所以我希望将它们作为指针传递并完成基本相同的事情。

2 个答案:

答案 0 :(得分:1)

由于NSNumber不是原始类型,因此必须先将其初始化。

NSNumber *mean = [NSNumber initWithFloat:0.0f];
[statistics calculateMean:mean];

现在您应该能够正确访问平均值。并且还要检查meanOfArray方法,它是否真的返回NSNumber对象。

答案 1 :(得分:1)

您应该将指针传递给指针

NSNumber *mean;
[statistics calculateMean:&mean];
NSLog(@"%@ is the mean", mean);

+ (void)calculateMean:(NSNumber **)MeanEst
{
    *MeanEst = [stepFunc meanOfArray:sub_values]; 
    //meanOfArray returns an NSNumber*
}