通过 performSelector 传递 CGSize

Log*_*Rex 2 objective-c ios

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

-(CGSize)theSizeToUse
Run Code Online (Sandbox Code Playgroud)

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

if ([myClass respondsToSelector:@selector(theSizeToUse)])    CGSize
   theSize = [myClass performSelector:@selector:(theSizeToUse)];
Run Code Online (Sandbox Code Playgroud)

好吧,这是行不通的,因为 performSelector 将返回一个 id,而不是一个 CGSize,所以我考虑将它包装在一个 NSValue 中并返回一个 NSValue,然后我会解开它。

查看 NSValue 的文档,很清楚要做什么……只需调用NSValue valueWithSize打包和解包NSValue sizeValue即可。一切顺利,直到我到达 sizeValue... 没有这样的属性或方法。

我正在为 iOS 开发,在装有 OS X 10.10 的 MacBook 上针对 iOS 7

知道如何让这个工作吗?

Tom*_*mmy 5

您可能是NSValue通过 Google查找的?这将带您到 Mac 文档,其中建议+valueWithSize:sizeValue用于NSSize结构。NSSize未在 iOS 上定义。

对于 iOS,您应该使用+valueWithCGSize:-CGSizeValue。对于iOS版的文件NSValue在这里