- 在ARC环境下,编译器不会处理C语言申请的内存空间.
- 在ARC环境下,当出现C语言和OC语言的混合开发时,需要实现数据类型的转换,在数据类型转换时还需要使用桥接,告诉编译器内存管理方式.
举例 :
- (void)pthreadDemo {
// 新线程的标示符
pthread_t ID;
// 定义异步函数的参数
// char *cStr = "hello";
NSString *ocStr = @"hello";
// 创建子线程 : C和OC的混编,数据类型转换结束后使用__bridge标记,告诉编译器内存管理方式
int result = pthread_create(&ID, NULL, demo, (__bridge void *)(ocStr));
// 判断创建子线程是否成功
if (result == 0) {
NSLog(@"子线程创建成功");
} else {
NSLog(@"子线程创建失败");
}
}
/// 子线程执行的函数
void *demo(void *param) {
// 接收外界传入的参数 : C和OC的混编,数据类型转换结束后使用__bridge标记,告诉编译器内存管理方式
NSString *str = (__bridge NSString *)(param);
NSLog(@"demo = %@ %@",str,[NSThread currentThread]);
return NULL;
}