考虑这行代码,数据是一个方法的参数:快速Objective-C的问题
myVar = [[NSMutableData data] retain];
我不能完全肯定这是怎么回事,但我认为这是分配myVar的中包含的数据数据,增加它的引用计数。有人可以证实或否认这一点?谢谢!的原代码
来源snippet-见清单1:Apple Dev Article
考虑这行代码,数据是一个方法的参数:快速Objective-C的问题
myVar = [[NSMutableData data] retain];
我不能完全肯定这是怎么回事,但我认为这是分配myVar的中包含的数据数据,增加它的引用计数。有人可以证实或否认这一点?谢谢!的原代码
来源snippet-见清单1:Apple Dev Article
[NSMutableData data]将返回一个自动释放的对象(便捷方法)。
因此,当当前运行循环的自动释放池被耗尽时它会自动释放。
你保留它来防止这种...
那你确定你有一个有效的指向对象。 这是正确的,只是不要忘了释放它,当你不需要它了......
编辑
例如:
[ [ [ [ [ [ NSData data ] retain ] release ] autorelease ] retain ];
保留计数为2时,自动释放一个对象不会改变保留计数... 但是该对象在当前的自动释放池中放置了两次,所以它将在下一次放出时释放两次...
您正在使用NSMutableData的新实例的便捷方法,然后将其保留你的初始化变量myVar的。
它与myVar = [[NSMutableData alloc] init];
基本相同,因为您仍然保留它。
在上面,“data”是一个返回类NSMutableData的新对象的类方法。由于“数据”不是隐含其返回对象所有权的方法之一,因此调用该对象的“保留”方法来建立所有权。现在,调用者负责在完成对象时放弃其所有权声明。
谢谢,剩下的一个问题:NSMutableData之后的单词数据的意义是什么? – 2011-03-22 01:11:16
这是类方法的名称:+(NSData)数据。在其他语言中也称为静态方法。 – Macmade 2011-03-22 01:13:39
@Macmade:实际上,Objective-C *中的类方法并不类似于静态方法。 – jlehr 2011-03-22 03:08:12