我无法弄清楚为什么我的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)”的函数。因为我不能返回两个对象,所以我希望将它们作为指针传递并完成基本相同的事情。
答案 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*
}