A variable created with the [NSArray array] method isn't completely dealloc when the controller dealloc
5 Answers
Under ARC.
[NSArray array] and [[NSArray alloc] init] do the same. Return an immutable, empty array. ARC takes care of the memory management.
No ARC.
[NSArray array] returns an array which will be autoreleased.
[[NSArray alloc] init] returns an array that you have to take care of in terms of memory management by calling a release on it when you don't need it anymore.
Note
There is little use of instantiating empty immutable array. Check NSArray's other initializers that take items as arguments. In this case, you have an immutable array with items in it. But again, it all depends on your needs.
Comments
The [NSArray Array] class method by itself produces an autoreleased array, meaning you don't have to (and should not) release it manually.
[NSArray Array] is a constructor vending.
But after coming to ARC(Automatic reference counting) there is no such thing as release. So the difference between alloc-init and a constructor vending an autoreleased object becomes practically irrelevance.