我即将制作iPhone应用程序。 我遇到了一个问题。
NSArray *array2 = [NSArray alloc];
[array2 initWithObjects:@"a",@"b",@"c",@"d",nil];
NSMutableArray *arr3 = [NSArray ArrayWithObjects:@"e",@"f",@"g",nil];
NSUInteger uInt1 = [array2 count];
uInt1 = [arr3 count];
NSMutableArray *mutableArray = [[NSMutableArray alloc] initWithArray:array2];
NSLog(@"count : %d", [mutableArray count]);
这段代码错了吗? 我想我熟悉c语言。 但像c-objective类一样难以处理 NS家庭......
这是我第一次使用iPhone编程..
答案 0 :(得分:1)
取决于你想要做什么,但从语法上来说,它应该是更像这样的东西:
NSArray *array1 = [[NSArray alloc] initWithObjects:@"a",@"b",@"c",@"d",nil];
NSMutableArray * array2 = [NSMutableArray arrayWithObjects:@"e",@"f",@"g",nil];
NSUInteger count1 = [array1 count];
NSUInteger count2 = [array2 count];
NSMutableArray * array3 = [[NSMutableArray alloc] initWithArray:array2];
几个笔记:
答案 1 :(得分:0)
NSArray *array2 = [NSArray alloc];
[array2 initWithObjects:@"a",@"b",@"c",@"d",nil];
您应该将initWithObjects:
的结果分配给array2
,通常您甚至不会从alloc
分割init...
NSArray *array2 = [[NSArray alloc] initWithObjects:@"a",@"b",@"c",@"d",nil];
或使用arrayWithObjects:
方法:
NSArray *array2 = [NSArray arrayWithObjects:@"a",@"b",@"c",@"d",nil];
或使用文字语法
NSArray *array2 = @[@"a",@"b",@"c",@"d"];
NSMutableArray *arr3 = [NSArray ArrayWithObjects:@"e",@"f",@"g",nil];
您不能将不可变数组NSArray
分配给可变数组NSMutableArray
,ArrayWithObjects
的情况也是错误的。正确的是:
NSMutableArray *arr3 = [NSMutableArray arrayWithObjects:@"e",@"f",@"g",nil];
这里没有错:
NSUInteger uInt1 = [array2 count];
uInt1 = [arr3 count];
NSMutableArray *mutableArray = [[NSMutableArray alloc] initWithArray:array2];
NSLog(@"count : %d", [mutableArray count]);
%d
不应与NSUInteger
一起使用。您将在64位计算机上收到编译器警告。
将数字打印为对象:
NSLog(@"count : %@", @([mutableArray count]));
答案 2 :(得分:0)
一个。 NSArray
创作
NSArray *array2 = [NSArray alloc];
[array2 initWithObjects:@"a",@"b",@"c",@"d",nil];
这是一个真正的错误:您必须尊重init…
方法具有返回值:
NSArray *array2 = [NSArray alloc];
array2 = [array2 initWithObjects:@"a",@"b",@"c",@"d",nil];
但正如sulthan所说,你通常会在一个声明中这样做。
然而,你可以忘记我所说的内容,因为你可以希望你想用数组文字更容易做到:
NSArray *array2 = @[@"a",@"b",@"c",@"d"];
B中。 NSMutableArray
创作
NSMutableArray *arr3 = [NSArray ArrayWithObjects:@"e",@"f",@"g",nil];
有一个错误,编译器应警告您:您创建NSArray
的实例并将其分配给NSMutableArray
的对象引用,什么是子类。选项:
NSMutableArray *arr3 = [NSMutableArray ArrayWithObjects:@"e",@"f",@"g",nil];
或
NSMutableArray *arr3 = [@"e",@"f",@"g" mutableCopy];
℃。登录
NSLog(@"count : %d", [mutableArray count]);
有一个错误,编译器应警告您:-count
返回类型为NSUInteger
的值。这可以是int或long,具体取决于体系结构。由于clang确实格式化了字符串检查,因此%d
是longs的错误占位符。通常的处理方法是:
NSLog(@"count : %ld", (long)[mutableArray count]);