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)
它是自动释放的,所以你不必担心以后发布它.
我不确定其他问题是什么问题,你能否改写一下?从你给出的代码,我认为它应该工作
第一:
[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)
| 归档时间: |
|
| 查看次数: |
506 次 |
| 最近记录: |