Objective-C

142 阅读2分钟

1. 基本数据类型

Objective-C 继承了 C 的基本数据类型,用于存储简单的值。

数据类型描述示例
int整型,存储整数int age = 25;
float浮点型,存储单精度小数float weight = 60.5;
double双精度浮点型,存储更高精度小数double pi = 3.14159;
char字符型,存储单个字符char grade = 'A';
BOOL布尔型,存储布尔值BOOL isHappy = YES;
void无类型,常用于方法返回值void sayHello();

基本数据类型的操作

  • 算术运算+, -, *, /, %
  • 比较运算==, !=, <, >, <=, >=
  • 逻辑运算&&, ||, !
int a = 5, b = 10;
BOOL isGreater = (a > b); // NO

2. 对象类型

对象类型是基于 NSObject 的类类型,用于处理复杂数据。它们是 Foundation 框架的重要组成部分。

2.1 字符串类型

  • NSString:不可变字符串。
  • NSMutableString:可变字符串。
NSString *immutableString = @"Hello, World!";
NSMutableString *mutableString = [NSMutableString stringWithString:@"Hello"];
[mutableString appendString:@", World!"];
NSLog(@"%@", mutableString); // 输出: Hello, World!

常用方法:

NSString *uppercase = [immutableString uppercaseString]; // 转大写
NSString *substring = [immutableString substringFromIndex:7]; // 截取子串
BOOL contains = [immutableString containsString:@"World"]; // 判断包含

2.2 数组类型

  • NSArray:不可变数组。
  • NSMutableArray:可变数组。
NSArray *immutableArray = @[@"Apple", @"Banana", @"Cherry"];
NSMutableArray *mutableArray = [NSMutableArray arrayWithArray:immutableArray];
[mutableArray addObject:@"Date"];
NSLog(@"%@", mutableArray); // 输出: Apple, Banana, Cherry, Date

常用方法:

NSString *firstElement = immutableArray[0]; // 访问元素
NSUInteger count = [immutableArray count]; // 获取长度
[mutableArray removeObject:@"Banana"]; // 移除元素

2.3 字典类型

  • NSDictionary:不可变字典,键值对存储。
  • NSMutableDictionary:可变字典。
NSDictionary *immutableDict = @{@"name": @"Lihongjun", @"age": @25};
NSMutableDictionary *mutableDict = [NSMutableDictionary dictionaryWithDictionary:immutableDict];
[mutableDict setObject:@"Zhejiang" forKey:@"location"];
NSLog(@"%@", mutableDict); // 输出: {name = Lihongjun; age = 25; location = Zhejiang;}

常用方法:

NSString *name = [immutableDict objectForKey:@"name"]; // 访问值
[mutableDict removeObjectForKey:@"age"]; // 移除键值对

2.4 数值类型

  • NSNumber:数值对象,用于封装基本数据类型。
NSNumber *intNumber = @42; // 整数
NSNumber *floatNumber = @3.14; // 浮点数
NSNumber *boolNumber = @YES; // 布尔值
NSLog(@"%@", intNumber); // 输出: 42

常用方法:

int intValue = [intNumber intValue];
float floatValue = [floatNumber floatValue];
BOOL boolValue = [boolNumber boolValue];

2.5 集合类型

  • NSSet:不可变集合,无序且唯一。
  • NSMutableSet:可变集合。
NSSet *immutableSet = [NSSet setWithObjects:@"A", @"B", @"C", nil];
NSMutableSet *mutableSet = [NSMutableSet setWithSet:immutableSet];
[mutableSet addObject:@"D"];
NSLog(@"%@", mutableSet); // 输出: {A, B, C, D}

3. 特殊类型

3.1 空类型

  • nil:表示对象为 NULL。
  • NULL:表示 C 的空指针。
  • NSNull:表示集合中的空值。
NSString *name = nil; // 对象为空
if (name == nil) {
    NSLog(@"Name is nil");
}

3.2 ID 类型

  • id 是一种通用类型,可以存储任何对象类型。
id someObject = @"This is a string";
if ([someObject isKindOfClass:[NSString class]]) {
    NSLog(@"This is a string object");
}

3.3 SEL 类型

  • SEL 用于方法选择器。
SEL selector = @selector(sayHello);
if ([object respondsToSelector:selector]) {
    [object performSelector:selector];
}

4. 数据类型转换

  • 基本类型转换:直接转换。
int a = 5;
float b = (float)a / 2; // 2.5
  • 对象类型与基本类型转换
NSNumber *number = @42;
int value = [number intValue];