Do variables declared in methods get erased after the method call is done? Ie If i have the method “someMethod” and every time it is called i want to return a different NSString from a stack property will the method return the next object on the stack or will it keep returned the first index since x is erased at the end of the method call. I know if C that variables are erased after function calls, is it the same in objective c? Would using a seperate property for the variable x some this problem? Thanks
(Double) someMethod{
int x;
[self.stack objectAtIndex:x];
x++;
}
After reading the comments I tried creating a property to replace x and here is what I wrote but I get an error warning stating “local declaration of “_location” hides instance variable” What does this mean?
@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++;
}
Yes
Objective C methods are implemented “on top” of C functions, so the same rules apply. In particular, your code exhibits undefined behavior (reading of uninitialized variable).
To fix this issue, add an instance variable
xin place of the automatic variable that your code snippet currently declares.automatic is the “official” name of “stack” variables, i.e. variables that you declare inside your methods / functions.