美文网首页
指针,以及strong、weak指针

指针,以及strong、weak指针

作者: 懒惰的习惯 | 来源:发表于2015-12-24 21:37 被阅读225次

很久没有仔细再去思考指针的问题过了,今天突然想起,问一下自己,什么是指针呢?忽而发现不太清楚,忘记了。所以再次在这里温习一下指针的概念以及强弱指针的问题。

1.指针

什么是指针?简单的来说就是保存变量地址值的变量,通过指针可以直接操作内存,所以在oc中要注意内存管理,因而出现了MRC、ARC。通过下面的代码我们首先来熟悉一下oc中指针的用法:

        int a = 3;
        int *b = NULL;
        b = &a;
        
        NSLog(@"%zd, %zd", a, *b);

这里的a变量是基本数据类型变量,而b变量是基本数据类型的指针变量,在oc中指针变量存放的一定是地址,所以

        int *b = a

这种写法在oc中是会发生警告(编译)的,运行时是会报错的,a是基本数据类型,返回的是值而不是地址,编译器不会认可,而oc对象而是允许的,也是必须的。

        int a = 3;
        int *b = &a;
        
        int **c = NULL;
        c = &b;
        NSLog(@"%zd, %zd, %zd", a, *b, **c);

同上,这也是一样,基本数据类似返回的是值,而oc中指针只能存放基本数据类型的地址。

2.strong、weak指针

在oc中由于所有的对象都是需要指针来获取的,所以会出现内存溢出、内存异常、内存警告的问题,所以在MRC中,我们需要手动的进行内存管理,然而在ARC相对而言就管理的少一些了,但是也并不是说就不需要我们进行监控了,再不用到的对象,我们要及时置空(nil),因而就出现了strong、weak了,这在老版本中相当于retain、assign。在ARC中,只要有一个对象还被strong指针所指,就不会被释放,而weak则没有,weak指针所指的对象,如果没有其他strong指针所指则会在创建时,就会被释放,weak指针的作用是为了防止循环引用,如delegate、block,在ARC中weak指针的运用也是很好的内存管理。

更加详细的内容,参考M了个J老师的文章:

strong、weak指针
http://blog.csdn.net/q199109106q/article/details/8565017

相关文章

  • 指针,以及strong、weak指针

    很久没有仔细再去思考指针的问题过了,今天突然想起,问一下自己,什么是指针呢?忽而发现不太清楚,忘记了。所以再次在这...

  • iOS中的weak指针

    ObjC runtime是如何实现weak指针的 用strong指针创建weak指针,系统会调用objc_init...

  • iOS复习之strong、weak

    【IOS学习基础】weak和strong、懒加载、循环引用ARC指南1 - strong和weak指针

  • iOS小笔记本

    strong和weak strong修饰的指针变量指向对象时,当指针指向新值或者指针不复存在,相关联的对象就会自动...

  • Object-C 中的强指针与弱指针

    1>强指针:默认情况下,所有的指针都是强指针.我们也可以用__strong修饰。 2>弱指针:用__weak修饰的...

  • 内存管理

    一,堆和栈 二,空指针、野指针和僵尸对象、内存泄露 三,assign,weak,strong,copy 详解 四,...

  • strong和weak指针

    提示:本文中所说的"实例变量"即是"成员变量","局部变量"即是"本地变量" 一、简介 ARC是自iOS 5之后增...

  • strong与weak 指针

    一、简介ARC是自iOS 5之后增加的新特性,完全消除了手动管理内存的烦琐,编译器会自动在适当的地方插入适当的re...

  • 属性关键字

    (weak,assign,Strong,copy) weak: 弱指针, 在对象一创建后就会被释放, 继续引用的时...

  • 关于引用指针引用的若干问题 2018-06-15

    ARC 下默认指针是强引用:__strong &__weak &__unsafe_unretained的比较 参考...

网友评论

      本文标题:指针,以及strong、weak指针

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