What is the difference between [Class new] and [[Class alloc] init] in iOS?
Solution 1
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
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
Here: 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.
Prasad G
Updated on July 06, 2020Comments
-
Prasad G almost 4 years
Possible Duplicate:
alloc, init, and new in Objective-CI am a little confused about
[Class new]
and[[Class alloc] init]
. I have defined an objectcontent
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?
-
Amr Lotfy over 8 yearsGreat ! That was helpful !
-
TOMKA almost 8 yearsDelegates don't really have anything to do with this. Do you mean
NSObject
protocol?