美文网首页
Chapter 10 - 强指针 弱指针

Chapter 10 - 强指针 弱指针

作者: 锐視角RaysJoe | 来源:发表于2019-03-06 23:18 被阅读0次

强指针

  • 默认情况下,我们声明一个指针 这个指针就是1个强指针
  • 我们也可以使用__strong来显式声明这是一个强指针
Person *p1; 这是一个强指针,指针默认情况下都是强指针
__strong Person *p2; 这也是一个强指针,使用__strong来显式的声明强指针
弱指针:使用__weak标识的指针就叫做弱指针

无论是强指针还是弱指针,都是指针,都可以用来存储地址,这1点没有任何区别
都可以通过这个指针访问对象的成员
唯一的区别就是在ARC模式下,他们用来作为回收对象的基准

如果1个对象没有任何强类型的指针指向这个对象的时候,对象就会被自动释放

确认程序是否开启了ARC模式

1.默认情况下,XCode开启ARC机制
2.ARC机制下,不允许调用retain、release、retainCount、autorelease方法
3.在dealloc中 不允许[super dealloc]

演示第一个ARC案例

int main (int argc, const char *argv[])
{
    @autoreleasepool
    {
        Person *p1 = [Person new];   //p1是个强指针
        NSLog(@"------------");
    }  //当执行到这里的时候,p1指针被回收,那么Person对象就没有任何强指针指向它了,对象就在这里被回收
      return 0;
}
int main (int argc, const char *argv[])
{
    @autoreleasepool
    {
        __strong Person *p1 = [Person new]; 
        __weak Person *p2 = p1; 
        p1 = nil;
    } 
      return 0;
}

p1 = nil,p1就不指向这个对象了,只剩下p2指这个对象,但是p2是个弱指针,所以对象就被回收了

相关文章

  • Chapter 10 - 强指针 弱指针

    强指针 默认情况下,我们声明一个指针 这个指针就是1个强指针 我们也可以使用__strong来显式声明这是一个强指...

  • android智能指针介绍

    本篇介绍 android中有三种智能指针,分别是轻量级指针,强指针,弱指针。轻量级指针实现简洁,效果类似于强指针,...

  • 懒加载, 强/弱指针, 强/弱引用

    点击查看-->懒加载, 强/弱指针, 强/弱引用

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

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

  • Android基础--智能指针

    智能指针分为3类为轻量级指针(Light Pointer)、强指针(Strong Pointer)和弱指针(Wea...

  • iOS 中的内存管理优化

    闭包 外面将强引用对象转化为弱引用指针,防止循环引用 block内弱引用转换成strong强引用指针,防止多线程和...

  • Android智能指针

    网上已经有很多分析智能指针的文章了,讲得不错的是:Android系统的智能指针(轻量级指针、强指针和弱指针)的实现...

  • ARC中强指针与弱指针

    ARC是苹果为了简化程序员对内存的管理,推出的一套内存管理机制使用ARC机制,对象的申请和释放工作会在运行时,由编...

  • Android智能指针

    A、在这里说明下,android中sp为强指针(sp==IServiceManager*),wp为弱指针。而在C+...

  • Objective-C基础学习之ARC下的内存管理

    1.ARC下单对象内存管理 局部变量释放对象随之被释放 清空指针对象随之被释放 默认清空所有指针都是强指针 弱指针...

网友评论

      本文标题:Chapter 10 - 强指针 弱指针

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