如何转换此代码?

时间:2014-08-22 12:54:11

标签: objective-c arrays code-conversion

我具有从用Java编写的图像中获取像素的功能。我将其转换为Objective C. p1是Pixel类的对象。在getpixels函数内部,前两行显示如何获取图像的宽度和高度,并将其存储到p1.width和p1.height中。第三行是为了创建一系列与图像像素数相等的整数并将它们存储到像素数组中(即为图像的每个像素创建一个int)

public void getpixels(Bitmap image, Effect temp)
{
    p1.width=image.getWidth();
    p1.height=image.getHeight();
    p1.pixels=new int[p1.width*p1.height];
}

我已经转换了前两行,但我不知道如何转换第三行。

-(void) getpixels: (UIImage *) image :(Effect *) temp
{
    p1.width= (int) image.size.width;
    p1.height=(int) image.size.height;
    int size= ([p1 width]*[p1 height]);
    //array =(
}

任何帮助将不胜感激。感谢。

1 个答案:

答案 0 :(得分:2)

如果要动态地向对象添加对象,则必须创建一个可变数组:

NSMutableArray *array = [NSMutableArray arrayWithCapacity:[p1 width]*[p1 height]];

这将创建一个可变数组,您可以在其中添加对象。在目标C中,你不创建一个int数组或浮点数组(如果你愿意,你可以在plain c中编写一个int数组)而不是只创建一个数组然后你可以添加你想要的任何对象,只要它是一个对象而不是原始的 要将对象添加到数组,请使用:

[array addObject:someObj]  

要在数组中添加一个int,你必须用NSNumber包装它,这样它就是一个对象而不是一个原语,例如添加原语31 int:

[array addObject:@(31)]  

@(31)语法只是创建NSNumber的简便方法,相当于使用[NSNumber numberWithInt:31]