Objective-C 学习笔记(三) Numbers/数字
Objective-C Numbers/数字
Objective-C中提供了一系列的NSNumber和重要的工作方法:
+ (NSNumber *)numberWithBool:(BOOL)value | 创建并返回包含给定值的NSNumber对象,将其视为BOOL。 |
+ (NSNumber *)numberWithChar:(char)value | |
+ (NSNumber *)numberWithDouble:(double)value | |
+ (NSNumber *)numberWithFloat:(float)value | |
+ (NSNumber *)numberWithInt:(int)value | |
+ (NSNumber *)numberWithInteger:(NSInteger)value | |
- (BOOL)boolValue | 以BOOL形式返回接收者的值。 |
- (char)charValue | |
- (double)doubleValue | |
- (float)floatValue | |
- (NSInteger)integerValue | |
- (int)intValue | |
- (NSString *)stringValue | 以可读的字符串的形式返回接收者的值。 |
下面是一个简单的例子,使用的NSNumber两个数字相乘,并返回该产品。
1 #import <Foundation/Foundation.h> 2 3 @interface SampleClass:NSObject 4 5 - (NSNumber *)multiplyA:(NSNumber *)a withB:(NSNumber *)b; 6 7 @end 8 9 @implementation SampleClass 10 11 - (NSNumber *)multiplyA:(NSNumber *)a withB:(NSNumber *)b 12 { 13 float number1 = [a floatValue]; 14 float number2 = [b floatValue]; 15 float product = number1 * number2; 16 NSNumber *result = [NSNumber numberWithFloat:product]; 17 return result; 18 } 19 20 @end 21 22 int main() 23 { 24 NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 25 26 SampleClass *sampleClass = [[SampleClass alloc]init]; 27 NSNumber *a = [NSNumber numberWithFloat:10.5]; 28 NSNumber *b = [NSNumber numberWithFloat:10.0]; 29 NSNumber *result = [sampleClass multiplyA:a withB:b]; 30 NSString *resultString = [result stringValue]; 31 NSLog(@"The product is %@",resultString); 32 33 [pool drain]; 34 return 0; 35 }
解惑:
- [pool release]和[pool drain]的区别
release与drain的区别是drain在有GC的环境中会引起GC回收操作,release反之。但在非GC环境中,两者相同。
- GC == garbage collection,内存的释放采取的垃圾自动回收机制,在编程的时候不用考虑变量不用时释放内存
参考资料: