IPHONE:如何构建和使用特殊常量数组?

时间:2009-09-28 05:10:04

标签: iphone iphone-sdk-3.0

我正在使用CGLayers及其混合模式常量,如kCGBlendModeDifference,kCGBlendModeHardLight,kCGBlendModeLuminosity等。

我想用这些常量构建一个数组,并在索引中使用它们,如

CGContextSetBlendMode(context, [myArrayOfBlendModes objectAtIndex:x]);

但我有两个问题:

1)Objective-C不允许使用

构建数组
NSMutableArray * myArrayOfBlendModes = [[[NSMutableArray alloc] initWithObjects:
kCGBlendModeDifference,
kCGBlendModeHardLight,
kCGBlendModeLuminosity,
nil] autorelease];

因为这些常量不是对象。为了使事情变得更糟,这些常量返回CGBlend值......

所以,第一点是如何制作一个CGBlends数组......

2)如果可以的话,

[myArrayOfBlendModes objectAtIndex:x]

返回可在

上使用的有效值
CGContextSetBlendMode(context, [myArrayOfBlendModes objectAtIndex:x]);

???

这里还有另一个问题..一个用作C例程参数的Objective-c代码......是否可能?

这是我试图解决几个小时的两个难题......

感谢您的帮助

2 个答案:

答案 0 :(得分:3)

据我所知,这些常数是整数。如果您真的想要这种功能,可以执行以下操作:

  

CGBlendMode模式[] =   {kCGBlendModeDifference,   kCGBlendModeHardLight,   kCGBlendModeDifference};

或者,如果你真的想要使用NSArray,你可以把它们放到NSNumber中......

  

NSNumber * luminous = [NSNumber numberWithInt:kCGBlendModeDifference],   *差异= [NSNumber numberWithInt:kCGBlendModeDifference],* hardLight =   [NSNumber numberWithInt:   kCGBlendModeHardLight];

NSMutableArray * myArrayOfBlendModes =
     

[[[NSMutableArray alloc]   initWithObjects:       区别,       强光,       夜光,       nil] autorelease];

CGContextSetBlendMode(context, [[myArrayOfBlendModes objectAtIndex:x]
     

的intValue]);

答案 1 :(得分:0)

是的,您可以使用obj-c调用来提供c函数。 Objective C和C是相同的舞蹈 - Objective C只是C的超集。它将运行该方法并将结果发送回c函数调用没有问题。