【问题标题】:Objective-C: Value of my int not what I expectObjective-C:我的 int 值不是我所期望的
【发布时间】: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?您在作业中收到了哪些编译器警告?

标签: objective-c ios


【解决方案1】:

好像是NSNumber的地址。检查您是否正确初始化了 nodeLevel(例如使用[NSNumber intValue]

【讨论】:

    【解决方案2】:

    po 代表“打印对象”,因此它应该与对象一起使用,而不是原始对象。 print 将返回一个整数的实际值。

    我认为 nodelevel 可能已设置为整数变量的地址,即

    nodeLevel = &intToUse;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-02
      • 1970-01-01
      • 1970-01-01
      • 2021-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多