Objective-C:我的 int 值不是我所期望的
Posted
技术标签:
【中文标题】Objective-C:我的 int 值不是我所期望的【英文标题】:Objective-C: Value of my int not what I expect 【发布时间】:2010-11-05 14:25:21 【问题描述】:我在一个定义为 int 的类中有一个属性。我检索 int 值(即 15)并将其分配给 UISlider.value,即使最大值设置为 100,它也始终以最大值显示 - 这是因为被分配/检索的值远大于应有的值.我确信这是我对 object-c 和 c 的一般工作方式的简单误解。
这是我的代码:
// device is retrieved from my app delegate NSMutableArray
uiSlider.value = device.nodeLevel;
如果我在该行放置一个断点并拉起 gdb,当我执行此命令时:
po [device nodeLevel]
它打印“15”,这是预期的,因为这是之前 int 属性设置的值。
但是,当我这样做时:
print [device nodeLevel]
我最终将实际值分配给滑块的 value 属性......这是“100812800” - 这几乎看起来像是一个内存地址或其他东西。在任何情况下,它不是我分配给 nodeLevel 的值,因此也不是我想要分配给滑块的 value 属性的值。
我错过了什么?
仅供参考,这是我的设备类的声明:
// Device.H file
@interface Device : NSObject
@private int nodeLevel;
@property (readwrite, assign, nonatomic) int nodeLevel;
// Device.m file
@implementation Device
@synthesize nodeLevel;
- (id)init
self.nodeLevel = 0;
return self;
【问题讨论】:
如何分配给nodeLevel?您在作业中收到了哪些编译器警告? 【参考方案1】:好像是NSNumber
的地址。检查您是否正确初始化了 nodeLevel(例如使用[NSNumber intValue]
)
【讨论】:
【参考方案2】:po 代表“打印对象”,因此它应该与对象一起使用,而不是原始对象。 print 将返回一个整数的实际值。
我认为 nodelevel 可能已设置为整数变量的地址,即
nodeLevel = &intToUse;
【讨论】:
以上是关于Objective-C:我的 int 值不是我所期望的的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 pySerial 从 Python 发送 int 或 string 并在 C 中转换为 int 或 String
Objective-C 检查带有 int 的数组是不是包含 int [关闭]
在Objective-C中使用精确的int字典值过滤字典的NSMutableArray