目标c中的float []数组问题

时间:2011-09-22 01:04:22

标签: objective-c

我是通过目标c在xcode中编码。我想出了一个问题。 我想尝试

declare float[] weights; 

结果看起来像这样

weight[0] = 0.5
weight[1] = 0.4
weight[2] = 0.9

A.H

NSMutableArray *weight;

A.M

weights = [NSMutableArray array];

for(int i=0; i < 4; i++) {
    float randomNumber = arc4random() % 11;
    [weights addObject:[[NSNumber alloc] initWithFloat:randomNumber]];
    NSLog(@" for loops color prob weghts=%f",[weights objectAtIndex:i] );

}

我不知道这段代码有什么问题。请帮我看看?

当我通过NSLOG打印时“所有[重量= 0.000]以及我如何访问[重量浮动值]。

其次,当我将这个类创建到另一个类时,有权重[0],[1],[2],[3]并且没有值

2 个答案:

答案 0 :(得分:3)

在NSLog中打印时应该是[[weights objectAtIndex:i] floatValue]

答案 1 :(得分:1)

NSNumber是一个类,而不是整数类型。

因此,您必须使用%@,而不是%f。

NSLog(@" for loops color prob weghts=%@",[weights objectAtIndex:i] );

或者,像你说的那样使用floatValue。您可能需要先将对象强制转换为NSNumber(对于类型安全性)

NSNumber *number = (NSNumber *)[weights objectAtIndex:i];
NSLog(@" for loops color prob weghts=%f", [number floatValue]);

此外,您在这里泄漏对象,因为在将它们放入数组后没有释放它们。将它们放入数组后释放,或使用[NSNumber numberWithFloat:]