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

目标C:原始数据类型的访问

  •  1
  • rishi  · 技术社区  · 14 年前

    我想访问基本数据类型,比如目标C中的int、bool。 我已经创建了一个类,其中声明了一个整型变量。 现在在其他类中,我想访问这个数据并设置它的值。

    正如在目标C中一样,setter方法只适用于对象,我不能将in t转换为对象。

    那么我怎样才能访问数据呢?

    请建议一些方法。

    3 回复  |  直到 14 年前
        1
  •  2
  •   JeremyP    14 年前

    正如在目标C中一样,setter方法只适用于对象,我不能将in t转换为对象。

    你从哪里得到这个主意的?您可以使用properties或normal访问器将objective-c属性作为基元类型。

    // in the .h file
    // intIVar and otherIntIvar are int instance variables
    
    @property (assign) int myIntIVar;
    //         ^^^^^^ stops the runtime from sending retain or copy to synth'd ivars
    -(int) myOtherIntIVar;
    -(void) setMyOtherIntIVar;
    
    // in the .m file
    
    @synthesize myIntIVar = intIVar;
    
    -(int) myOtherIntIVar
    {
        return otherIntIVar;
    }
    
    -(void) setMyOtherIntIvar: (int) newValue
    {
        otherIntIvar = newValue;
    }
    
        2
  •  4
  •   Grant Paul    14 年前

    可以将getter和setter与基元一起使用。

    只需使用@synthesis,或创建自己的方法:

    - (int)primitiveIvar;
    - (void)setPrimitiveIvar:(int)_ivar;
    
        3
  •  0
  •   willc2    14 年前

    查韦恩 是正确的,直接回答你的问题。这只是附加信息。

    如果要将基元值转换为对象,例如用于 不可变数组 ,你用一个 数字对象 这样地:

    NSNumber *someValue = [NSNumber numberWithInt: 5];  
    

    同样的事情也适用于 浮动 , 布尔 , 烧焦 , 双重的 还有很多其他的原始类型。

    要将对象值放回原语,请执行以下操作:

    int someInteger = [someValue intValue];  
    

    经验法则:

    如果你做了大量的数学运算,需要一个数字用于本地,或者需要高性能,那么就使用原语。

    如果要在集合类中存储值( 不可变数组 , NSET , 字典 等)并需要类似对象的行为,如成员资格测试、谓词过滤、易于保存到磁盘或plist创建、使用 数字对象 .

    看看 nsnumber类文档 更多信息。