weak 和 strong 属性在很多面试过程中 都有提及。看似简单的属性关键字,但不一定掌握更深。

   下面我简单说下他们两之间的关系;

    iOS 5 开始引入arc,省去了程序员手动进行内存管理的繁琐,然block语句出现后weak属性再次出现在代码中。

   一言以蔽之:对象的所有权。

    strong属性 对对象是有所有权的  只要还有一个变量指向对象,对象就会保持在内存中。当指针指向新值,或者指针不再存在时,相关联的对象就会自动释放。

  weak属性 它对对象没有所有权,以它为属性声明的对象当对象值改变后,自动被zero,指向nil;

  block语句中 用weak声明后,当前的controller dealloc 后即被释放,若不用weak声明,即使走了dealloc 当前controller依然存在于内存中。