代码之家  ›  专栏  ›  技术社区  ›  bugfixr

目标C:我智力的价值不是我所期望的

  •  1
  • bugfixr  · 技术社区  · 15 年前

    我在一个定义为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]
    

    但是,当我这样做时:

    print [device nodeLevel]
    

    我最终得到了分配给滑块值属性的实际值。。。这是“100812800”-它似乎是一个内存地址或其他东西。无论如何,这是

    我错过了什么?

    仅供参考,这里是我的设备类声明:

    // 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;
    }
    
    2 回复  |  直到 15 年前
        1
  •  1
  •   Yuras    15 年前

    好像是 NSNumber . 检查是否正确初始化nodeLevel(例如使用 [NSNumber intValue]

        2
  •  0
  •   Vertism    15 年前

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

    nodeLevel = &intToUse;