【发布时间】:2015-05-24 19:36:17
【问题描述】:
我正在尝试通过这样做将 NSPopUpButton 中选定项目的字符串值转换为它的 int 值(弹出窗口中的项目是各种数字):
txtUPs = [txtUPs stringByAppendingString:btnUPs.titleOfSelectedItem];
numUPs = (int) txtUPs;
NSLog(@"%i" ,numUPs);
我没有得到整数 6(当我从弹出窗口中选择 6 时),而是得到一个像 26376 这样的巨大数字。我做错了什么?
谢谢, 基思
【问题讨论】:
-
表达式
(int) txtUPs是一个“类型转换”表达式。您是在告诉编译器简单地表现得好像txtUPs是int。它不会转换或解释或类似的东西。txtUPs不是字符串。它是一个变量,它持有一个指向字符串对象的 指针。也就是说,它在内存中保存了一个地址。地址实际上是数字。因此,您告诉编译器将txtUPs中保存的地址视为int,并将该值分配给numUPs。这就是为什么你会得到一些任意值。这是txtUPs持有的地址。 -
谢谢大家。我理解 Ken 关于 txtUPs 是指针的观点。
标签: objective-c cocoa