What is the difference between [Class new] and [[Class alloc] init] in iOS?

IosObjective CNew OperatorAllocationInit

Ios Problem Overview


> Possible Duplicate:
> alloc, init, and new in Objective-C

I am a little confused about [Class new] and [[Class alloc] init]. I have defined an object content using [Class new] and [[Class alloc] init].

(1). NSMutableArray *content = [NSMutableArray new];
(2). NSMutableArray *content = [[NSMutableArray alloc] init];

My question is about the differences between [Class new] and [[Class alloc] init]. For me, (1) and (2) are similar. If (1) and (2) are similar, then why do we use [[Class alloc] init] most of the time, compared to [Class new]? I think that there must be some difference.

Kindly explain the differences, pros & cons of both?

Ios Solutions


Solution 1 - Ios

Alloc: Class method of NSObject. Returns a new instance of the receiving class.

Init: Instance method of NSObject. Implemented by subclasses to initialize a new object (the receiver) immediately after memory for it has been allocated.

New: Class method of NSObject. Allocates a new instance of the receiving class, sends it an init message, and returns the initialized object.

Release: Instance method of NSObject delegate. Decrements the receiver’s reference count.

Autorelease: Instance method of NSObject delegate. Adds the receiver to the current autorelease pool.

Retain: Instance method of NSObject delegate. Increments the receiver’s reference count.

Copy: Instance method of NSObject delegate. Returns a new instance that’s a copy of the receiver.

So to conclude we can say that

alloc goes with init

new = alloc + init

Solution 2 - Ios

The +new method is simply shorthand for +alloc and -init. The ownership semantics are identical. The only benefit to using +new is that it is more concise. If you need to provide arguments to the class's initialiser, you will have to use the +alloc and -initWith... methods instead.

Solution 3 - Ios

Here: https://stackoverflow.com/questions/3330963/alloc-init-and-new-in-objective-c

Basically it's a question of modern versus traditional. The most direct advantage of init over new is that there are many custom init methods.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionPrasad GView Question on Stackoverflow
Solution 1 - IosShantanuView Answer on Stackoverflow
Solution 2 - IosdreamlaxView Answer on Stackoverflow
Solution 3 - IosOFRBGView Answer on Stackoverflow