If you are used to calling the release
method after an alloc
/init
method or a retain
statement, ARC allows you to forgo all that as you can still call your alloc
/init
methods or retain
statements and not add in a release
statement as ARC takes care of this for you. This introduces brevity and makes your code more concise. Here is an example:
Before ARC:
Class1 *obj1 = [[Class1 alloc] init]; Class1 *obj2 = [obj1 retain]; [obj2 release]; [obj1 release];
After ARC:
Class1 *obj1 = [[Class1 alloc] init]; Class1 *obj2 = obj1;
If you wrote the code without calling the release
methods as seen under After ARC, you will have two memory leaks that will appear in your code due to you forgetting to put in the two release
methods. You will notice that the number of lines has been reduced and the code is easier to understand, as there is no need to call any release
statements. So with ARC, people will be fooled into thinking that their memory management woes are over, but actually, memory leaks...