美文网首页
有关于OC内存管理的使用

有关于OC内存管理的使用

作者: 小苗晓雪 | 来源:发表于2017-04-19 14:39 被阅读18次

用类方法创建的对象你怎么release掉?!
用在类方法里追加autoRelease方法 , 在main函数里使用该类方法的时候创建一个线程池, 系统会自动把这个类方法创建的对象放入离它最近的线程池里(OC的约定) ;调用线程池的drain(干涸)方法即可释放类方法创建的对象!
为什么不在该类方法 Test *a = [Test getInstance] 下面调用 [a release]方法呢?!第一这里调用可以!但是其他例子就不行了为什么因为你在类外面你不知道我类里边到底alloc init创建了多少个对象 , 你要知道你尽管release...... 所以说我们在这里要进行autoRelease自动释放也被称为延后释放

main.m文件

#import <Foundation/Foundation.h>
#import "Test.h"

//void foo(int i) {
//    Test *a = [[Test alloc] init] ;
//    Test *b = nil ;
//    if (i > 10) {
//        b = a ;
//        [b retain] ;
//    }
//    [a release] ;
//    [b release] ;
//}

int main(int argc, const char * argv[]) {
//    foo(1) ;
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init] ;
    Test *a = [Test getInstance] ;
    NSLog(@"main before drain") ;
    [pool drain] ;
    NSLog(@"main after drain") ;
    return 0;
}

Test.h文件

#import <Foundation/Foundation.h>

@interface Test : NSObject
+ (Test *)getInstance ;
@end

Test.m文件


#import "Test.h"

@implementation Test

//了解一个语言的核心:就是了解那些系统帮我们操作的东西 ;
- (instancetype)retain {
    NSLog(@"Test:before Retain: %@" , @(self.retainCount)) ;
    id result = [super retain] ;
    NSLog(@"Test after Retain %@" , @(self.retainCount)) ;
    return result ;
}


- (oneway void)release {
    NSLog(@"Test:before Release: %@" , @(self.retainCount)) ;
    [super release] ;
    NSLog(@"Test:before Release: %@" , @(self.retainCount)) ;
    
    
}


- (void)dealloc {
    [super dealloc] ;
    NSLog(@"Test:dealloc") ;
}


+ (Test *)getInstance {
    Test *result = [[[Test alloc] init] autorelease] ;
    return result ;
}

@end

愿编程让这个世界更美好

相关文章

  • Lesson 0-1 Objective-C basic

    6.OC 手动内存管理 OC 内存管理原则: 只要使用 alloc, new, copy, mutableCopy...

  • 九、自动引用计数ARC @GeekBand

    ARC OC默认的内存管理机制 受ARC管理的对象 OC对象指针 Block指针 使用attribute((NSO...

  • iOS的内存管理

    iOS OC对象的内存管理 在iOS中,使用引用计数来管理OC对象内存 一个新创建的OC对象引用计数默认是1,当引...

  • 有关于OC内存管理的使用

    用类方法创建的对象你怎么release掉?!用在类方法里追加autoRelease方法 , 在main函数里使用该...

  • 内存管理

    OC对象的内存管理 1、在iOS中,使用引用计数来管理OC对象的内存,一个新创建的OC对象引用计数默认是1,当引用...

  • 内存管理

    OC对象的内存管理 在iOS中,使用引用计数来管理OC对象的内存 一个新创建的OC对象引用计数默认是1,当引用计数...

  • iOS 开发 基础理论知识一(面试可用)

    1. 内存管理 在iOS 开发中, 使用引用计数来管理OC对象的内存,新创建的OC对象的引用计数是1. 调...

  • iOS内存管理总结

    一、详述OC的内存管理机制。 OC使用引用计数(retainCount)的机制来管理对象。自己生成的对象,自己持有...

  • iOS面试题-第一页

    1.简述OC中内存管理机制. 答:内存管理机制:使用引用计数管理,分为ARC和MRC,MRC需要程序员自己管理内存...

  • iOS面试 | 基础知识 | <1>

    1.简述OC中内存管理机制 答:内存管理机制:使用引用计数管理,分为ARC和MRC,MRC需要程序员自己管理内存,...

网友评论

      本文标题:有关于OC内存管理的使用

      本文链接:https://www.haomeiwen.com/subject/cathzttx.html