通过performSelector传递CGSize

时间:2015-06-04 19:30:11

标签: ios objective-c

我有一个像这样返回CGSize的方法......

-(CGSize)theSizeToUse

然后在其他地方我有代码询问该类是否响应此选择器,如果是,请使用执行选择器调用它...

if ([myClass respondsToSelector:@selector(theSizeToUse)])    CGSize
   theSize = [myClass performSelector:@selector:(theSizeToUse)];

嗯,这不会起作用,因为performSelector将返回一个id,而不是CGSize,所以我试着将它包装在一个NSValue中并返回一个NSValue,然后我将其解包。 / p>

查看NSValue的文档,它非常清楚该怎么做...只需调用NSValue valueWithSize打包它,然后NSValue sizeValue解压缩它。 一切顺利,直到我达到sizeValue ...没有这样的属性或方法。

我正在为iOS开发,在OS X 10.10的MacBook上定位iOS 7

知道如何才能让它发挥作用吗?

1 个答案:

答案 0 :(得分:4)

您可能是通过Google查询NSValue了吗?这会将您带到Mac文档,该文档为+valueWithSize:结构建议sizeValueNSSize。 iOS上未定义NSSize

对于iOS,您应该使用+valueWithCGSize:-CGSizeValueNSValue的iOS文档为here