美文网首页
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 - 强指针 弱指针

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