1
NSMutableArray *content =[NSMutableArray new];
2
NSMutableArray *content = [[NSMutableArray alloc] init];
这就是(1)和(2)的保留cout。
答案 0 :(得分:2)
请勿使用retainCount
[1]
你永远不应该使用-retainCount,因为它从不告诉你任何事情 有用。 Foundation和AppKit / UIKit的实现 框架是不透明的;你不知道保留了什么,为什么会这样 被保留,谁保留,保留,等等.- Dave DeLong
NSMutableArray *content =[NSMutableArray new]; //new will increase retainCount of content by 1
NSMutableArray *content = [[NSMutableArray alloc] init];//alloc will increase retainCount of content by 1
答案 1 :(得分:1)
Alloc:NSObject的类方法。返回接收类的新实例。
Init:NSObject的实例方法。由子类实现,在分配了内存之后立即初始化一个新对象(接收者)。
新:NSObject的类方法。分配接收类的新实例,向其发送init消息,并返回初始化对象。
两者的保留计数均为1
答案 2 :(得分:1)
两个表达式的结果相同。 +new
只是调用alloc
和init
的捷径。从字面上看,new
实现为:
+ new { return [[self alloc] init]; }
因此,两者都返回保留计数 +1 的对象。不是 1 ,而是 +1 。也就是说,当代码完成对象时,它们会返回一个代码必须调用release
的对象。
绝对保留计数毫无意义。在内部,NSMutableArray
可能retain
对象74次,只要它根据需要释放它74次,这将是有效的。当然,NSMutableArray
并没有真正发挥这样的恶作剧,但有些课程(尤其是通过网络和/或用户界面玩游戏的更复杂的课程)。
答案 3 :(得分:0)
他们都是1.但你不应该担心这一点。记住:
如果你分配一个对象,你负责释放它(我假设你正在使用MRR)。
答案 4 :(得分:0)
对于(1)和(2),保留计数为1,除非您使用ARC,否则请确保将其释放到某处。
答案 5 :(得分:0)
两个阵列保留计数均为1
在下列情况下,对象的retainCount会发生变化:
1)创建对象(new或alloc,copy或mutablecopy)时,它的保留计数为1.
2)当您向对象发送保留消息时,其保留计数为 增加1。
3)当您向对象发送释放消息时,其保留计数为 递减1。
当您向对象发送自动释放消息时,其保留计数将减1(不是 立即发布但未来一段时间)
答案 6 :(得分:0)
+ new方法只是+ alloc和-init的简写。所有权语义是相同的。使用+ new的唯一好处是它更简洁。如果需要为类的初始化器提供参数,则必须使用+ alloc和-initWith ...方法。 所以两者的保留计数都是1。