我被检查出this question具有这种代码Objective-C中的可扩展集合?
- (NSArray *) percentagesRGBArray:(float[]) rgbArray
{
NSNumber *red = [NSNumber numberWithFloat:rgbArray[0]/255];
NSNumber *green = [NSNumber numberWithFloat:rgbArray[1]/255];
NSNumber *blue = [NSNumber numberWithFloat:rgbArray[2]/255];
NSNumber *alpha = [NSNumber numberWithFloat:rgbArray[3]];
return [NSArray arrayWithObjects:red, green, blue, alpha, nil];
}
,我想,“太可怕了,如果您有什么超过三种颜色?”我知道,你不知道,但是如果你确实有count-1颜色和alpha?假设你有[rgbArray count]
(甚至可以计算真实数组的工作吗?)仅使用objective-C,你会返回一个NSArray对象的正常方式是什么?
我只是试图解决它,但我仍然没有在Objective-C中做到这一点。这是我的失败尝试:
- (NSArray *) what:(float[]) rgbArray
{
int len = sizeof(rgbArray)/sizeof(float); // made up syntax
NSLog(@"length is wrong dummy %d", len);
NSNumber *retVal[len];
for (int i=0;i<(len-1);i++) {
NSNumber *red = [NSNumber numberWithFloat:rgbArray[0]/255];
retVal[i] = red;
[red release];
}
retVal[len-1] = [NSNumber numberWithFloat:rgbArray[len-1]];
return [NSArray arrayWithObjects:retVal count:len];
}
非常酷。现在我看到了你的代码,我发现我的问题缺乏精确性。如果我有任何疑问,我会测试一些这些东西,并回复评论。谢谢! – 2010-03-04 01:04:29