I have a beginner’s question about releasing variables and not wasting memory…
I don’t quite understand when to release variables. I understand that I should always do this if I have assigned them in my header file (in my @interface section and my @property commands). I release them in my -(void)dealloc function.
However, what am I supposed to do with variables that I happen to use in some of my methods, e.g.:
for (int temp = 0; temp < 3; temp++) {
// do something...
}
[temp release];
This is obviously wrong (at least xCode tells me so), as ‘temp’ is undeclared. But why? I’ve declared it as an int and temp thus takes up space in my memory, I’m sure. How do I tell the program to free up the space temp has taken after I don’t need it anymore? I’m sure this is obvious, but I simply don’t get it.
I’d be very happy for any suggestions for a beginner of how not to be a memory pig and to have ‘memory leaking’ everywhere in my apps…
You declared it as an int in the scope of the loop. Once the loop is done, it goes out of scope.
Also, you can not release an int, which is a primitive type. You can only release a subclass of NSObject. A good rule of thumb is that you eventually have to release anything that you called alloc or retain on.
Edit: For your edification, memory management only applies to objects allocated from the heap. That would be NSObjects obtained via “alloc” or must C-level memory allocated with something like “malloc()”. Declaring a variable like “int x” is called an “auto” variable in that is is created on the stack and will AUTOmatically disappear then that block ends (the end of a “block” being the end of the function or perhaps the end of a {} pair or even the end of a for/if/while block.
Since Objective-C is basically just a special version of C (with messages), it does not create permanent objects unless you explicitly tell it to. This is different form languages like Python or Javascript.