c_cpp 记录deallocs的NSObject类别,在跟踪内存泄漏时非常有用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 记录deallocs的NSObject类别,在跟踪内存泄漏时非常有用相关的知识,希望对你有一定的参考价值。

#import "NSObject+LogDealloc.h"
#import <objc/runtime.h>

static char __logDeallocAssociatedKey__;

@interface LogDealloc : NSObject
@property (strong) NSString* message;
@end

@implementation NSObject (LogDealloc)

- (void)logOnDealloc
{
    if( objc_getAssociatedObject( self, &__logDeallocAssociatedKey__ ) == nil ) {
        LogDealloc* log = [[LogDealloc alloc] init];
        log.message = NSStringFromClass( self.class );
        objc_setAssociatedObject( self, &__logDeallocAssociatedKey__, log, OBJC_ASSOCIATION_RETAIN );
    }
}

@end

@implementation LogDealloc

- (void)dealloc
{
    NSLog( @"dealloc: %@", self.message );
}

@end
#import <Foundation/Foundation.h>

@interface NSObject (LogDealloc)

- (void)logOnDealloc;

@end

以上是关于c_cpp 记录deallocs的NSObject类别,在跟踪内存泄漏时非常有用的主要内容,如果未能解决你的问题,请参考以下文章

使用 dealloc 的小代码中的内存泄漏

alloc/retain/release/dealloc的底层实现(上)

alloc/retain/release/dealloc的底层实现(上)

混合单个实例,而不是类

再次重用 Deallocated Cursor 进行删除

oc内存回收问题,求解