可以用weak修饰delegate。NSTimer 1首先我们声明timer的时候,使用strong修饰的,self对timer进行的强引用,如下 2创建timer时,target对self又进行了强引用 至此,循环引用已经形成。
在盐湖等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站设计、成都网站制作 网站设计制作按需策划,公司网站建设,企业网站建设,高端网站设计,营销型网站建设,外贸营销网站建设,盐湖网站建设费用合理。
修饰对象不会增加其引用计数,避免了循环引用。 如果被修饰的对象在某一时机被释放,会产生 悬垂指针 ,再通过这个指针去访问原对象的话,会导致内存泄露,所以一般不建议用,__unsafe_unretained去解除循环引用。
在iOS开发中,循环引用常常发生在使用Block、Delegate和通知等机制时。为了避免循环引用,可以使用weak、strong和copy等关键字来修饰对象,明确表达对象之间的拥有关系。
1、) 这个方法会返回一个 NSObserver 对象,这个对象被系统强持有,调用者需要持有这个对象,用于停止通知移除观察者时使用。
2、NSNotificationCenter 是类似一个广播中心站,使用 defaultCenter 来获取应用中的通知中心,它可以向应用任何地方发送和接收通知。
3、方法三 使用userInfo 传递消息 1。
1、同,这个对象的 retain 值+1 assign 地址还是0x1111,内容也还是“ABC”。也就是说,retain 是指针拷贝,copy 是内容拷贝。strong,weak 用来修饰属性。
2、retain:引用计数器+1,指向同一地址。结果和浅拷贝一样,仅仅是使得对象的引用计数器自增copy:对不可变对象等同与retain,指针拷贝,引用计数器+1。对可变对象执行深拷贝,等同mutableCopy,内容拷贝。
3、也就是说,retain是指针拷贝,copy是内容拷贝。
4、retain: 针对于对象类型,setter方法对参数进行release旧值,再retain新值。
在 Student 类中添加分别由 strong 、 copy 、 weak 修饰的属性:在通过 Clang 编译后的 .cpp 文件中,看到会生成三个对应的 setter 方法:唯独在 setAge 的方法调用中,是通过 objc_setProperty 方法实现的。
assign assign主要用来修饰基本数据类型,例如int,float,NSInteger,CGFloat,储存在栈中内存不需要管理,一般不修饰对象,不然对象内存地址被释放,但是指针不会释放就会造成野指针。
Weak+Controller是一种模式设计模式,简称WC模式。主要用于分离组件操作逻辑和组件控制逻辑。其中Weak表示要访问的操作逻辑组件,它不会调用任何其它的代码。
ARC的修饰符 ARC主要提供了4种修饰符,他们分别是:__strong,__weak,__autoreleasing,__unsafe_unretained。__strong 表示引用为强引用。对应在定义property时的strong。