Chapter 10 - 强指针 弱指针

强指针

  • 默认情况下,我们声明一个指针 这个指针就是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是个弱指针,所以对象就被回收了
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,799评论 1 32
  • 29.理解引用计数 Objective-C语言使用引用计数来管理内存,也就是说,每个对象都有个可以递增或递减的计数...
    Code_Ninja阅读 5,457评论 1 3
  • OC基础总结 重新回过头看这些基础知识,对许多知识点都有新的认识,拥有坚实的基础才能更快的成长。 OC内存管理 -...
    xx_cc阅读 7,683评论 1 21
  • 没错我即将27了,却还是单身贵族,并不是单身狗,为什么这么说呢,因为我不是被单身,我是主动选择单身...
    Seventeen_b3a6阅读 1,495评论 0 1
  • 一颗种子 降落在世间 扎根于大地 沐浴阳光 经历风雨 待时机成熟 花朵自然绽放 生命之美 无需用力 亦无需假装 只...
    心理师静怡阅读 1,378评论 0 1