Objective-C:如何在NSMutableArray中获取对象的属性?

时间:2014-01-08 01:15:26

标签: ios objective-c properties uiimage nsmutablearray

我有NSMutableArray UIImage名为 camImages scale。然后我想获得图像的[[camImages objectAtIndex:i] scale] //doesn't return the desired scale property [camImages.objectAtIndex:i].scale //doesn't work (Error: Property 'scale' not found on object of type 'id') 属性,但我似乎无法使用

访问它
UIImage *img;
img.scale //desired property

如果我有一个UIImage

,则可以获得该属性
CGFloat

我是iOS&的新手Objective-C,我如何获得所需的属性?提前谢谢!

修改

[[camImages objectAtIndex:i] scale]将返回

  

NSDecimalNumberBehaviors

     

比例

     

返回小数分隔符后允许的位数。 (所需的)

     
      
  • (short)scale返回值小数分隔符后允许的位数。
  •   

而所需的比例为{{1}}类型:

  

的UIImage

     

尺度

     

图像的比例因子。 (只读)

     

@property(非原子,只读)CGFloat规模讨论如果你加载一个   来自名称中包含@ 2x修饰符的文件的图像,比例为   设为2.0。您还可以在何时指定显式比例因子   从Core Graphics图像初始化图像。所有其他图像都是   假设比例因子为1.0。

     

如果乘以图像的逻辑大小(存储在大小中)   通过此属性中的值,您可以获得维度   以像素为单位的图像。

2 个答案:

答案 0 :(得分:7)

让您的代码更易于阅读和调试:

UIImage *image = camImages[i];
CGFloat scale = image.scale;

答案 1 :(得分:3)

如果你有两个带有不同签名的scale方法,编译器可能无法选择要使用的正确签名,所以你必须告诉编译器对象的类型,以便找到正确的签名

如果你真的想要一个行解决方案

[((UIImage *)[camImages objectAtIndex:i]) scale];
((UIImage *)[camImages objectAtIndex:i]).scale;

但请使用@rmaddy答案以提高可读性