iPhone - block 枚举

标签 iphone cocoa-touch objective-c-blocks

我有一个包含多个对象的数组,我想为每个值添加 90.0。 我想使用枚举来做到这一点。然后我创建这个:

[myArray enumerateObjectsWithOptions:NSEnumerationConcurrent
     usingBlock:^(id obj, NSUInteger idx, BOOL *stop) {

     double aValue = [obj doubleValue];                      
     aValue += 90.0;
     obj = [NSNumber numberWithDouble:aValue];
}];

我的问题是关于最后一行。我获取对象值,添加 90,然后必须将其存储回来。因为这有点奇怪,因为我正在对象级别上工作,所以我不确定第三行是否具有正确的语法来将更新后的值存储回对象上。 Xcode 提示“obj”从未被使用,因为它认为我将数字分配给 obj 是为了使用它,但我只是将值存储回来。

这是正确的吗?

最佳答案

obj 不是引用或指针,您实际上无法将其存储回来。 NSArray 不支持此功能。您可以做的是不存储 NSNumbers,而是存储指向 NSNumber(即 NSNumber**)的指针并更新对新对象的引用。

将数字存储在普通的 double[] 数组中也可以。

关于iPhone - block 枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5098245/

相关文章:

iphone - 恢复 NSUserDefault 中的值

iOS:隐藏后无法显示 View

ios - 强 block 捕获 'self'

objective-c - block 声明语法列表

ios - iOS 中的自定义角标(Badge)问题

iphone - UISearchBar becomeFirstResponder 返回 0,但对 UISearchBar 有有效引用

iphone - Web 开发框架会取代 native iPhone 编程吗?

iphone - __NSAutoreleaseNoPool() : Object 0x753c2f0 of class General autoreleased with no pool in place - just leaking

ios - 如何为方法编写和传递完成 block 参数?

objective-c - 尝试在 iPhone-Wax 中创建 NSDecimal