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];