我的头文件中定义了一个类级别int。在.m文件中,我有一个方法,我想采取一个int参数,修改它并在调用者处反映修改后的值。例如:
classLevelInt = 2;
[self someMethod:classLevelInt];
//Here, I'd like classLevelInt to equal the value assigned to it in the method
In -someMethod:
- (void)someMethod:(int)anInt{
//do some stuff
if(somecondition){
anInt = 2 + 3; //some operation
}
}
我尝试过使用
但永远不会看到classLevelInt方法中的值设置在该方法之外。如果不从-someMethod返回新的int值,我怎样才能在方法之外保留classLevelInt的值?或者,如果这不是一个好方法,那么更好的方法是什么?
答案 0 :(得分:15)
您可以将指针classLevelInt
传递给int*
。
classLevelInt = 2;
[self someMethod:&classLevelInt];
- (void)someMethod:(int*)anInt {
//do some stuff
if(somecondition){
*anInt = 2 + 3; //some operation
}
}
第二种方法,您可以直接更改同一班级中的classLevelInt
。
- (void)someMethod {
//do some stuff
if(somecondition){
classLevelInt = 2 + 3; //some operation
}
}
答案 1 :(得分:8)
iamamac 是正确的,但您也问过是否有更好的方法。
如果可能,只需直接返回值即可。通过引用通常会引起一些不愉快的“代码味道”。
如果你需要返回多个整数,也许你真的应该创建一个结构或类来封装数据。