
1. Objective-C与Foundation框架概述Objective-C作为苹果生态系统的核心编程语言其Foundation框架是每位iOS/macOS开发者必须掌握的基础工具集。Foundation框架提供了一系列基础类和数据类型的实现涵盖了从字符串处理、集合操作到文件系统管理等日常开发所需的绝大部分功能。提示虽然Swift已成为苹果主推语言但Objective-C在遗留代码维护、混合编程等场景仍不可替代深入理解Foundation框架对提升开发效率至关重要。2. Foundation框架核心组件解析2.1 基础数据类型Foundation框架对C语言原生类型进行了面向对象封装// NSNumber封装示例 NSNumber *intNumber [NSNumber numberWithInt:42]; NSNumber *floatNumber 3.14f; // 字面量语法 // NSValue封装复杂结构体 CGPoint point CGPointMake(10, 20); NSValue *pointValue [NSValue valueWithPoint:point];2.2 字符串处理NSString类提供了丰富的字符串操作方法NSString *original Objective-C Foundation; NSString *uppercase [original uppercaseString]; NSRange range [original rangeOfString:Found]; if (range.location ! NSNotFound) { NSLog(Found at location: %lu, (unsigned long)range.location); }2.3 集合类Foundation提供了三种主要集合类型集合类型特点线程安全NSArray有序集合不可变对象线程安全NSDictionary键值对存储不可变对象线程安全NSSet无序唯一值集合不可变对象线程安全// 集合操作示例 NSArray *sorted [[3, 1, 2] sortedArrayUsingSelector:selector(compare:)]; NSDictionary *info {name: John, age: 30};3. 内存管理关键点3.1 引用计数规则Objective-C内存管理遵循以下黄金法则创建对象alloc/new/copy/mutableCopy引用计数1保留对象retain引用计数1释放对象release引用计数-1自动释放autorelease延迟释放// 手动内存管理示例 NSMutableArray *array [[NSMutableArray alloc] init]; // 计数1 [array retain]; // 计数2 [array release]; // 计数1 [array release]; // 计数0对象销毁3.2 ARC最佳实践启用ARC后仍需注意避免循环引用使用__weak打破Core Foundation对象需要桥接某些系统API仍需要手动管理// 循环引用示例 __weak typeof(self) weakSelf self; [self setCompletionHandler:^{ [weakSelf doSomething]; }];4. 文件与数据持久化4.1 文件系统操作// 文件管理器使用 NSFileManager *manager [NSFileManager defaultManager]; NSURL *documents [[manager URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] firstObject]; NSURL *fileURL [documents URLByAppendingPathComponent:data.plist];4.2 归档与序列化// 对象归档 NSData *archived [NSKeyedArchiver archivedDataWithRootObject:myObject]; MyClass *unarchived [NSKeyedUnarchiver unarchiveObjectWithData:archived];5. 多线程编程5.1 GCD与OperationQueue// GCD示例 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // 后台任务 dispatch_async(dispatch_get_main_queue(), ^{ // 更新UI }); }); // NSOperation示例 NSBlockOperation *operation [NSBlockOperation blockOperationWithBlock:^{ // 执行任务 }]; [operation addDependency:otherOperation]; [[NSOperationQueue mainQueue] addOperation:operation];5.2 线程安全实践// 线程安全容器 NSMutableArray *threadSafeArray [NSMutableArray array]; dispatch_queue_t syncQueue dispatch_queue_create(com.example.syncQueue, NULL); dispatch_sync(syncQueue, ^{ [threadSafeArray addObject:newItem]; });6. 网络通信基础6.1 URL加载系统NSURLSession *session [NSURLSession sharedSession]; NSURLSessionDataTask *task [session dataTaskWithURL:[NSURL URLWithString:https://api.example.com] completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { // 处理响应 }]; [task resume];6.2 JSON解析NSError *error; NSDictionary *json [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:error]; if (!error) { NSString *name json[user][name]; }7. 调试技巧与常见问题7.1 典型错误处理try { // 可能抛出异常的代码 } catch (NSException *exception) { NSLog(Exception: %, exception); } finally { // 清理代码 }7.2 性能优化建议避免在循环中创建临时对象使用NSCache代替NSDictionary做缓存对频繁访问的数据建立索引使用instrument工具检测内存泄漏8. 与现代Swift的互操作8.1 混合编程要点// Swift中使用Objective-C类 let nsString: NSString Hello as NSString let swiftString String(nsString)8.2 API映射规则Objective-CSwiftNSStringStringNSArrayArrayNSDictionaryDictionaryNSErrorError掌握Foundation框架不仅能提升Objective-C开发能力也为理解Swift底层实现打下坚实基础。建议通过实际项目练习逐步深入框架的各个模块。