转:http://blog.youkuaiyun.com/hherima/article/details/38620175
@interface ViewController(){
NSObject* _instanceObj;
}
@implementation ViewController
- (void) viewDidLoad
{
_instanceObj = [[NSObject alloc] init];
static NSObject* __staticObj = nil;
__globalObj = [[NSObject alloc] init];
__staticObj = [[NSObject alloc] init];
NSObject* localObj = [[NSObject alloc] init];
NSLog(@"localObj count = %d", _objc_rootRetainCount(localObj));
__block NSObject* blockObj = [[NSObject alloc] init];
typedef void (^MyBlock)(void);
MyBlock aBlock = ^{
NSLog(@"%@", __globalObj);
NSLog(@"%@", __staticObj);
NSLog(@"%@", _instanceObj);
//NSLog(@"%@", localObj);
NSLog(@"localObj count = %d", _objc_rootRetainCount(localObj));
NSLog(@"%@", blockObj);
};
//aBlock = [aBlock copy];
aBlock();
NSLog(@"%d", _objc_rootRetainCount(__globalObj));
NSLog(@"%d", _objc_rootRetainCount(__staticObj));
NSLog(@"%d", _objc_rootRetainCount(_instanceObj));
NSLog(@"%d", _objc_rootRetainCount(localObj));
NSLog(@"localObj count = %d", _objc_rootRetainCount(localObj));
NSLog(@"%d", _objc_rootRetainCount(blockObj));
...
本文通过一个具体的Objective-C代码示例,深入探讨了不同类型的对象(如实例对象、全局对象、静态对象等)在内存中的管理方式。文章还展示了如何使用_block对象以及块(Block)内的对象引用,并分析了它们对内存计数的影响。

被折叠的 条评论
为什么被折叠?



