nic*_*ude 3 oop objective-c nsnumber
我看到了这个帖子,但想确认一下:
因此,基本上任何时候你想要处理这些对象,你必须解压他们的ivars,然后将它们打包回新的对象,大概是NSNumbers?
这看起来很弱(背面有很大的疼痛,没有?).
你们这些人如何使用这些?
你避开它们吗?对它们进行子类化?有可变版本吗?
这似乎是很多工作来处理它们,很想听听它们的好处以及更有经验的程序员使用它们的方式,或者他们用来避免使用它们的策略.
谢谢,
缺口
因此,基本上任何时候你想要处理这些对象,你必须解压他们的ivars,然后将它们打包回新的对象,大概是NSNumbers?
是.(顺便说一句,调用doubleValue
并不仅仅意味着解开ivar.也许还有一些转换.)
这看起来很弱(背面有很大的疼痛,没有?).
这种"装箱"是必要的,因为原始数字本身不支持Objective-C(Foundation.framework)的引用计数方案.例如,您必须打一个数字NSNumber
,以便将它们存储在一个NSArray
.
你避开它们吗?
你不能.
对它们进行子类化?
你不应该,但如果必须,请按照它的建议:
如果您想要的只是添加一些方便的方法,例如-numberByAddingNumber:
,使用类别:
@implementation NSNumber (MyExtension)
-(NSNumber*)numberByAddingNumber:(NSNumber*)another {
double myVal = [self doubleValue];
double anotherVal = [another doubleValue];
return [NSNumber numberWithDouble:myVal + anotherVal];
}
@end
...
NSNumber* a, *b;
...
NSNumber* c = [a numberByAddingNumber:b];
...
Run Code Online (Sandbox Code Playgroud)
有可变版本吗?
没有.