将intValue消息发送到NSNumber会导致"错误访问"错误

cfi*_*her 0 macos cocoa objective-c core-foundation

我正在尝试获取使用float初始化的NSNumber的整数值,我期望intValue处理转换(正如文档所说).

#import <Foundation/Foundation.h>
#import "Fraction.h"
#import "Complex.h"
#import "ComplexMathOps.h"

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];


    NSNumber    *myNum, *floatNum, *intNum;

    intNum = [NSNumber numberWithInt:100];
    floatNum = [NSNumber numberWithFloat:99];

    myNum = [floatNum intValue];

    NSLog(@"%@",myNum);



    [pool drain];
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?在不同数字类型之间进行转换的正确方法是什么?

Jon*_*LOo 5

它适用于我这样声明:

NSNumber * floatNum = [NSNumber numberWithFloat:99];
NSLog(@"%d",[floatNum intValue]);
Run Code Online (Sandbox Code Playgroud)


小智 5

[floatNum intValue]返回一个int类型,但是你将myNum声明为NSNumber.将myNum声明为int,一切都按预期工作.