NSMutable数组和脑损伤

rd4*_*d42 2 iphone objective-c nsmutablearray

由于我对obj c和NSMutable数组的完全误解,我最近问过一些骨头问题,我可以理解地吸引了一些自作聪明.所以我看了一本书和谷歌,看起来可能是我不应该编程因为我还是卡住了.

假设我正在循环方法A并且每个循环通过我想在NSMutable数组中添加一个double.这是我到目前为止所发现的.

你不能把基元放在数组中,所以我把我的double变成了NSNumber对象

NSNumber *newObject = [NSNumber initWithDouble:doubleNumber];
Run Code Online (Sandbox Code Playgroud)

XCode警告:'NSNumber'可能无法响应'+ initWithDouble:'

当我编译它时得到:

由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'+ [NSNumber initWithDouble:]:无法识别的选择器发送到类0x1ffea0'

我忽略了这一点并伪造.有人告诉我,我需要一个数组的init方法,这是有道理的,因为我不希望在循环中发生这种情况.这是我的init方法:

-(id) init{
    [super init];
    arrayOfTouches = [[NSMutableArray alloc] init];
    return self;
}
Run Code Online (Sandbox Code Playgroud)

我还没有尝试将它添加到阵列中.

[arrayOfTouches addObject:newObject];
Run Code Online (Sandbox Code Playgroud)

这是否可以打印出阵列.

NSLog(@"array: %@", touchBeginObj);
Run Code Online (Sandbox Code Playgroud)

骨头问题,可能.但该死的,如果我能找到任何关于你能做什么和不能做一个好榜样的所有部分.

感谢您的任何帮助或自作聪明评论.

是的,我有一本Obj-C书,实际上是3本,是的,我正在阅读它们:)

周末愉快.

Jam*_*uld 10

NSNumber *newObject = [NSNumber initWithDouble:doubleNumber];
Run Code Online (Sandbox Code Playgroud)

+alloc在上面的代码中错过了调用,这就是为什么它会抛出该错误 - 但为什么不使用:

NSNumber *newObject = [NSNumber numberWithDouble:doubleNumber];
Run Code Online (Sandbox Code Playgroud)

它是自动释放的,所以你不必担心以后发布它.

我不确定其他问题是什么问题,你能否改写一下?从你给出的代码,我认为它应该工作


jv4*_*v42 5

第一:

[NSNumber numberWithDouble: double]
Run Code Online (Sandbox Code Playgroud)

代替

[NSNumber initWithDouble: double]
Run Code Online (Sandbox Code Playgroud)

你的addObject看起来很好.

你有几种方法来打印你的数组,我建议迭代,因为它将在以后有用:

for (NSNumber *number in arrayOfTouches)
{
    NSLog(@"Number %f", [number doubleValue]);
}
Run Code Online (Sandbox Code Playgroud)