Reputation: 20564
Does the iPhone support garbage collection? If it does, then what are the alternate ways to perform the operations that are performaed using +alloc
and -init
combination:
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:xmlData];
UIImage *originalImage = [[UIImage alloc] initWithData:data];
detailViewController = [[[DetailViewController alloc] initWithNibName:@"DetailView bundle:[NSBundle mainBundle]] autorelease];
... and other commands. Thank you in advance for any help or direction that you can provide.
Upvotes: 12
Views: 12355
Reputation: 52565
No, garbage collection is not supported on the iPhone currently. You need to use alloc
/release
/autorelease
.
Upvotes: 7
Reputation: 350
In the entire discussion nobody says about the Java language, in Java the Garbage collection is in-built in the language so it is implicitly available in Android,J2ME and Blackberry :), where as in Objective-C it is optional, so in iPhone the GC is not available.
Upvotes: 1
Reputation: 75058
Note the lack of garbage collection means weak references are not supported either.
Upvotes: 2
Reputation: 22587
No. Garbage collection is too large an overhead for the limited battery life etc. on the device.
You must program always with an alloc/release
pattern in mind.
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:xmlData];
...
[xmlParser release];
or (not suitable for every situation)
NSXMLParser *xmlParser [[[NSXMLParser alloc] initWithData:xmlData] autorelease];
Hope this helps!
Upvotes: 32