iT邦幫忙

2021 iThome 鐵人賽

DAY 5
0

在 Objective-C 中,為了保存基本的資料類型,像是 int, float, bool,內建了許多與NSNumber有關的方法。

+ (NSNumber *)numberWithBool:(BOOL)value

建立並返回一個包含了給定值的NSNumber實體,將其視為BOOL

+ (NSNumber *)numberWithChar:(char)value         //2
+ (NSNumber *)numberWithDouble:(double)value     //3
+ (NSNumber *)numberWithFloat:(float)value       //4
+ (NSNumber *)numberWithInt:(int)value           //5
+ (NSNumber *)numberWithInteger:(NSInteger)value //6
  1. 建立並返回一個包含了給定值的NSNumber實體,將其視為char
  2. 建立並返回一個包含了給定值的NSNumber實體,將其視為double
  3. 建立並返回一個包含了給定值的NSNumber實體,將其視為float
  4. 建立並返回一個包含了給定值的NSNumber實體,將其視為int
  5. 建立並返回一個包含了給定值的NSNumber實體,將其視為NSInteger
- (BOOL)boolValue         //7
- (char)charValue         //8
- (double)doubleValue     //9
- (float)floatValue       //10
- (NSInteger)integerValue //11
- (int)intValue           //12
- (NSString *)stringValue //13
  1. 返回BOOL
  2. 返回char
  3. 返回double
  4. 返回float
  5. 返回NSInteger
  6. 返回int
  7. 返回NSString

ex.

#import <Foundation/Foundation.h>


@interface SampleClass : NSObject

- (NSNumber *)addA: (NSNumber *)a withB: (NSNumber *)b;

@end

@implementation SampleClass

- (NSNumber *)addA:(NSNumber *)a withB:(NSNumber *)b {
    float number1 = [a floatValue]; // number1 = 類型為 float 的 a 值
    float number2 = [b floatValue];
    float value = number1 + number2;
    NSNumber *result = [NSNumber numberWithFloat:value]; //number 本身不能算術運算,因此先轉成 float ,再變為 NSNumber
    return result;
}

@end

int main () {
    
//    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; //這與記憶體管理有關,但現在以是自動引用計數模式,已不可用了

    SampleClass *sampleClass = [[SampleClass alloc] init];
    NSNumber *a = [NSNumber numberWithFloat: 11.0];
    NSNumber *b = [NSNumber numberWithFloat: 10.0];
    NSNumber *result = [sampleClass addA:a withB:b];
    NSString *resultString = [result stringValue]; //NSNumber 轉為 NSString
    NSLog(@"結果為 %@",resultString);
    
    return 0;
}

結果:

2021-09-28 01:00:31.403729+0800 TestOC[15699:212863] 結果為 21

上一篇
Day 07- Blocks
下一篇
Day 09 - Array
系列文
iOS 菜鳥工程師的30天 objective-C10
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言