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

在Objective-C中使用精确的int字典值过滤字典的NSMutableArray

Objective-C 有没有办法判断一个对象是不是设置为自动释放?

Objective-c:自定义类实例作为字典键,当键存在时返回 nil