我想在Objective C中访问原始数据类型,如int,Bool。 我创建了一个类,其中我声明了一个整数varriable。 现在在其他类中我想访问这些数据并设置它的值。
与Objective C一样,setter方法仅适用于对象,我无法将int转换为object。
那么我怎样才能访问数据呢?
请提出一些建议。
答案 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类文档。