加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – 变量范围目标C.

发布时间:2020-12-14 17:50:01 所属栏目:百科 来源:网络整理
导读:方法调用完成后,方法中声明的变量是否被擦除?即如果我有方法“someMethod”并且每次调用它我想从堆栈属性返回不同的NSString将返回堆栈上的下一个对象或者它将保持返回第一个索引,因为x被删除了方法调用结束.我知道C是否在函数调用后删除了变量,它在目标c中
方法调用完成后,方法中声明的变量是否被擦除?即如果我有方法“someMethod”并且每次调用它我想从堆栈属性返回不同的NSString将返回堆栈上的下一个对象或者它将保持返回第一个索引,因为x被删除了方法调用结束.我知道C是否在函数调用后删除了变量,它在目标c中是否相同?会为变量x使用单独的属性这个问题吗?谢谢

(Double) someMethod{
int x;
[self.stack objectAtIndex:x];
x++;
}

阅读完评论之后,我尝试创建一个替换x的属性,这里是我写的但是我收到一条错误警告,声明“本地声明”_location“隐藏实例变量”这是什么意思?

@property (nonatomic) int location;
@synthesize location=_location;

-(int) location{
    if(!_location){
        int _location = 0;
     //warning is here 
    return _location;
     }
_location++;
return _location;

}

 (Double) someMethod{
int x;
[self.stack objectAtIndex:self.location];
x++;
}

解决方法

Do variables declared in methods get erased after the method call is done?

Objective C方法在C函数“顶部”实现,因此适用相同的规则.特别是,您的代码表现出未定义的行为(读取未初始化的变量).

要解决此问题,请添加实例变量x代替您的代码段当前声明的自动变量.

automatic是“堆栈”变量的“官方”名称,即您在方法/函数中声明的变量.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读