不确定是否使用类方法或实例方法来创建 NSarray....我的意思是有很多方法可以创建它们...抱歉 ios 开发新手。
3 回答
如果您使用 ARC,则没有区别。例如,这两行返回相同的内容:
[[NSArray alloc] initWithObject:myObject];
[NSArray arrayWithObject:myObject];
唯一的区别是后者返回一个自动释放的对象,如果您使用 ARC,则必须以与另一个相同的方式处理该对象。如果没有,您应该添加retain
到第二行代码,以防您想要返回对象的所有权。
您可以按照在任何编程语言中创建的方式创建 NSArray 或字符串,即分配内存 --> 将实例变量初始化为您想要的某种状态。
您可以为例如创建数组。
NSArray *myArray = [[NSArray alloc] init];
现在您也可以使用其他一些类方法,让我们以 NSString 为例。NSString *myString = [NSString stringwithformat:@"%@ - 这是我的字符串 -%@",@"<--",@"-->"];
现在使用 ARC,它并没有太大的区别,因为 ARC 将负责释放创建的对象,因为类方法通常是自动释放的。
基本上有三种方法可以获取,例如,一个 NSArray:
- 标准分配/初始化。至少从概念上讲,
[NSArray alloc]
是调用 NSArray 的一个类方法,然后生成的对象为该init..
步骤调用一种特殊形式的实例方法。 [NSArray arrayWithSomethingOrAnother..]
. 这会调用 NSAArray 上的类方法,该方法在内部执行 alloc/init(有一些曲折),然后根据需要“填充”对象。[someObject arrayByDoingSomething..]
. 这是一个返回 NSArray 的对象(可能是也可能不是 NSArray 对象)的实例方法。
实际上,(2) 和 (3) 之间有重叠的情况并不多——想不出 NSArray 的任何副手,尽管类似的 NSString 函数有少数。虽然纯粹主义者可能更喜欢旧的 alloc/init 与arrayWith...
类方法,但在 ARC 环境中并没有真正需要在 NSArray 上使用 alloc/init(尽管它仍然在手动引用计数环境中占有一席之地)。