-
Why should I declare local variables as ‘static’ inside a method?
Like:static NSString *cellIdentifier = @"Cell";
Is it a performance advantage?
(I know what ‘static’ does; in C context) -
What does this syntax mean?
[someObj release], someObj = nil;
Two statements?
Why should I assign nil again?
Is not ‘release’ enough?
Should I do it for all objects I allocate/own? Or for just view objects? -
Why does everyone copy NSString, but retains other objects (in property declaration)?
Yes, NSStrings can be changed, but other objects can be changed also, right?
Then why ‘copy’ for just NSString, not for all?
Is it just a defensive convention? -
Shouldn’t I release constant NSString? Like here:
NSString *CellIdentifier = @"Cell";
Why not? Does the compiler allocate/deallocate it for me? -
In some tutorial application I observed these (Built with IB):
Properties(IBOutlet, with same ivar name):window, someLabel, someTextField, etc etc...
In the dealloc method, although thewindowivar was released, others were not.
My question is: WHY? Shouldn’t I release other ivars(labels, textField) as well? Why not? -
Say, I have 3 cascaded drop-down lists.
I mean, based on what is selected on the first list, 2nd list is populated
and based on what is selected on the second list, 3rd list is populated.
What UI components can reflect this best?
How is drop-down list presented in iPhone UI?
Tableview with UIPicker? When should I update the 2nd, 3rd list?
Or just three labels which have touch events? -
Can you give me some good example tutorials about Core-Data?
(Not just simple data fetching and storing on 2/3 tables with 1/2 relationship) -
How can I know whether my app is leaking memory? Any tools?
Why should I declare local variables as ‘static’ inside a method? Like: static NSString
Share
static is exaclt y the same in Objective-C as in normal C.
It depends on the context. It stops there being any chance of over-releasing the object because subsequent release messages will be sent to nil instead.
NSStrings can’t be changed, but NSMutableStrings (a subclass) can. Yes, it’s a defensive convention.
Read the Cocoa Memory Management Rules. Did you obtain the constant string by alloc, copy or new? No you didn’t. Therefore, don’t release it unless you first retain it. Retaining constant strings does no harm.
Again, the memory management guidelines will help. If the object has retained the ivar (or created it with alloc, copy etc) it needs to be released.
Pass. I don’t do UI programming on the iPhone.
Apple’as Core Data Programming docs are a good place to start.
Try http://developer.apple.com/iphone/library/documentation/Performance/Conceptual/ManagingMemory/Articles/FindingLeaks.html