如何将id转换为浮点数?

16 macos casting objective-c

我遇到了这段代码的问题:

NSRect itemFrame;
id item;
// code to assign item goes here.
itemFrame.origin.y -= [item respondsToSelector:@selector(selectedHeight)] ? [item selectedHeight]   : [self defaultSelectedHeight];
Run Code Online (Sandbox Code Playgroud)

这是有问题的一点:

[item selectedHeight]
Run Code Online (Sandbox Code Playgroud)

编译器假设返回类型是id.我虽然添加一个演员会解决这个问题:

(float)[item selectedHeight]
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

我究竟做错了什么?(我怀疑问题是解决与id相关的指针,但我找不到任何相关的文档).

e.J*_*mes 37

你想要的[[item selectedHeight] floatValue],假设selectedHeight返回一个NSNumber.


cso*_*maz 7

我知道下面的代码适用于iOS 6 SDK.我假设obj对象包含一个浮点值.

id obj;
float fVal;

fVal = [obj floatValue];
Run Code Online (Sandbox Code Playgroud)