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

时间:2010-07-04 07:55:26

标签: objective-c

我想在Objective C中访问原始数据类型,如int,Bool。 我创建了一个类,其中我声明了一个整数varriable。 现在在其他类中我想访问这些数据并设置它的值。

与Objective C一样,setter方法仅适用于对象,我无法将int转换为object。

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

请提出一些建议。

3 个答案:

答案 0 :(得分:4)

您可以使用带基元的getter和setter。

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

- (int)primitiveIvar;
- (void)setPrimitiveIvar:(int)_ivar;

答案 1 :(得分:2)

  

与Objective C一样,setter方法仅适用于对象,我无法将int转换为object。

你从哪里得到这个想法。您可以使用属性或普通访问器将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 :(得分:0)

chpwn 是正确的并直接回答您的问题。这只是其他信息。

如果要将原始值转换为对象(例如在 NSArray 中使用),请将其包装在 NSNumber 中,如下所示:

NSNumber *someValue = [NSNumber numberWithInt: 5];  

同样适用于 float BOOL char double 以及大量其他原始类型。

将对象值放回原语:

int someInteger = [someValue intValue];  

经验法则:

如果您正在进行大量的数学运算,需要一个供本地使用的数字,或者需要高性能,请使用原语。

如果您要将值存储在集合类中( NSArray NSSet NSDictionary 等...)并且需要类似对象的行为,例如作为成员资格测试,谓词过滤,轻松保存到磁盘或plist创建,使用 NSNumber

有关详细信息,请查看 NSNumber类文档