分配NSInteger *

时间:2014-04-24 04:52:50

标签: ios objective-c

我确定我遗漏了一些明显的东西,但我想在Objective C中创建一个NSInteger指针的实例。

-(NSInteger*) getIntegerPointer{
  NSInteger  refValue = 0;
  NSInteger* theReturn = &refValue;
  return theReturn;
}

当我调用此函数时,theReturn为nil,但在调试器的函数内有效。

有什么建议吗?我不想将theReturn更改为NSInteger。

1 个答案:

答案 0 :(得分:1)

变量refValue是一个局部变量,这意味着它在-getIntegerPointer方法执行时将在堆栈中。一旦该方法返回,变量就会消失(从堆栈中弹出),因此它的地址不再有意义。

如果要返回有效指针,则必须为所指向的事物分配内存,如下所示:

-(NSInteger*) getIntegerPointer{
    NSInteger  refValue = 0;
    NSInteger* theReturn = malloc (sizeof(NSInteger));
    *theReturn = refValue;
    return theReturn;
}