iOS ARC机制要点

2017-03-12  本文已影响228人  JohnnyB0Y

第一点:是什么?

第二点:有什么?

__strong 修饰符
__weak 修饰符
__autoreleasing 修饰符
__unsafe_unretaied 修饰符

第三点:怎么做?

第四点:补充点?

Core Foundation 与 Objective-C 类型转换
__bridge 修饰符
CFStringRef s1 = (__bridge CFStringRef)[[NSString alloc] initWithFormat:@"Hello, %@!", @"Kobe"];
// 你不需要用 CFRelease() 去释放 s1。
__bridge_retained 修饰符
NSString *s1 = [[NSString alloc] initWithFormat:@"Hello, %@!", @"Kobe"];
CFStringRef s2 = (__bridge_retained CFStringRef)s1;
// or CFStringRef s2 = (CFStringRef)CFBridgingRetain(s1);
// do something with s2
//...
CFRelease(s2); // 注意要在使用结束后加这个
__bridge_transfer 修饰符
CFStringRef result = CFURLCreateStringByAddingPercentEscapes(. . .);
NSString *s = (__bridge_transfer NSString *)result;
//or NSString *s = (NSString *)CFBridgingRelease(result);
return s;
关于 Autorelease Pool

参考:

iOS开发ARC内存管理技术要点
黑幕背后的Autorelease
Objective-C Autorelease Pool 的实现原理
Transitioning to ARC Release Notes

上一篇 下一篇

猜你喜欢

热点阅读