黑马程序员_iOS_OC_ARC

原创 2015年11月21日 01:08:59

——- android培训java培训、期待与您交流! ———-

  1. ARC概念及原理
/*
 1.指针分类
 1)强指针:默认情况下都是强指针,关键字:strong
 2)弱指针:关键字:__weak
 2.什么是ARC
 编译器特性,垃圾回收是运行时特性
 3.ARC工作原理
 编译时插入内存管理代码
 判断:只要没有强指针指向对象,对象就释放。(忘记引用计数器)
 4.ARC机制图解
 */

2.ARC快速入门

/*
 1.ARC机制判断
判断是否是ARC机制
    查看项目信息
    不能使用retain,release autorelease retainCount
    dealloc方法中不能使用 [super dealloc];
 2.ARC快速使用
    正常创建对象,不用手动释放对象
 */
#import <Foundation/Foundation.h>
#import "Dog.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Dog *dog = [Dog new];
        [dog run];
    }
    return 0;
}

3.ARC下单对象内存管理

/*
 1.ARC下单对象内存管理

 2.强弱指针

 */
#import <Foundation/Foundation.h>
#import "Dog.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
//        在ARC下对象释放判断依据:对象没有强指针指向
//        对象立即销毁
//        __weak 弱指针  内存释放  指向nil
        Dog *dog = [Dog new];
        __weak Dog *dog2 = dog;
//        指针指向立即发生改变,对象没有强指针指向,对象立即销毁
        dog = nil;
        [dog2 run];

        [dog run];
    }//对象释放
    return 0;
}

4.ARC下多对象内存管理

#import <Foundation/Foundation.h>
#import "Dog.h"
#import "Person.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Dog *dog = [Dog new];
        Person *person = [Person new];
/*
 Person中@property (nonatomic,weak) Dog *dog;
 dog = nil   dog对象立即销毁

 Person中@property (nonatomic,strong) Dog *dog;
 dog = nil   dog对象不会立即销毁
 */
        person.dog = dog;
    }
    return 0;
}

5.ARC下循环引用问题

/*
 1.ARC下循环引入问题
 2.ARC下 @property set方法参数
 原子性、读写 和MRC一样
 MRC              ARC
    assign          assign
    retain          strong(oc对象)/weak(ui控件)
    copy            copy
 */
#import <Foundation/Foundation.h>
#import "Dog.h"
#import "Person.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Dog *dog = [Dog new];
        Person *person = [Person new];
/*
Person中@property (nonatomic,strong) Dog *dog;
Dog中@property (nonatomic,strong) Dog *dog;
构成循环引用问题,必须其中一个weak
*/
        person.dog = dog;
        dog.person = person;
    }
    return 0;
}

6.ARC使用特点及注意事项

#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //1.Student new
        //2.弱指针  指向
        //3.创建后立即销毁
        //释放空间
        //stu = nil
        __weak Person *person = [Person new];
        NSLog(@"%d",person.age);
    }
    return 0;
}

7.ARC模式下如何兼容ARC的类
编译标志:
1)ARC中使用MRC(-fno-objc-arc)
2)转变为ARC(-f-objc-arc)
8.MRC转ARC

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

黑马程序员IOS基础---OC学习之ARC

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、基本简介 1> ARC是自iOS5之后增加的新特性,完全消除...

黑马程序员——IOS基础——OC内存管理ARC

ARC的判断准则:只要没有强指针指向对象,

黑马程序员—IOS基础之OC—ARC和Category

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! —— 第一章 ARC 一、ARC概念及原理 在引入ARC内存管理之前我们先引入指...

黑马程序员————OC内存管理_ARC

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- ARC( Autom Reference Counting) 是一个编译器特性,会自动检测帮...

黑马程序员——OC语言------内存管理和ARC

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 内存管理   一、概述 移动设备的内存极其有限,每个app所能占用的内存是有限制的,当app所...

黑马程序员--OC自学笔记---08ARC、category、block

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 1.   ARC 1)        指针分类: ① &#...

黑马程序员——9、OC语言(内存管理和ARC)

一、内存管理

黑马程序员——OC的内存管理——ARC

一、基本概念1.什么是ARCARC(自动引用计数)。在ARC模式下,系统会自动追踪对象,并决定判断哪个对象仍会使用哪个对象不会被使用,并在适当的位置插入retain和release。ARC并非垃圾回收...

黑马程序员 OC中的内存管理及MRC和ARC单个对象的内存管理问题

一、    1.内存分区图:高地址  栈 区:局部变量                   代码块结束时,系统自动释放,不需要进行管理      ...

黑马程序员——OC内存管理复习(非ARC部分)

oc内存管理 一.计数器的思想 每个对象刚分配存储空间初始化时候默认计数器为1,然后每有一个新的指针指向他的时候计数器就会加1,每当这个指针不用而撤掉之后要减1,当计数器为0的时候,从内存...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)