美文网首页
属性copy.strong.weak总结

属性copy.strong.weak总结

作者: lityjey | 来源:发表于2016-07-21 14:56 被阅读0次

1.NSString类型的属性为什么用copy ?

NSString类型的属性可以用strong修饰,但会造成一些问题

用strong修饰的字符串,当NSMutableString的字符串给他赋值时,NSMutableString的字符串变了,它也会跟着改变,因为stong只是指针的引用,引用计数加1。

用copy修饰的字符串,不会随着源头的改变而改变,因为copy会复制一份。
如果源头的字符串是不可变的,那么用copy和strong是一样的,因为源头是不可变的字符串嘛,所以用copy还是strong看你的需要了,想让他随着源头改变就用strong,不想改变有用copy,一般不会让它改变,所以安全起见,字符串会用copy

2.代理.手动拖线的控件为什么用weak ?

self->对象(比如person对象)->代理->self(设置代理时:self.delegate=self);
会造成循环引用, 使用weak表明该属性定义了一种非拥有关系,为这种属性设置新值时,既不保留新值也不会释放旧值。
首先手动拖线的控件用weak不是因为会造成循环引用,self->view->sunViews->控件,这样已经有个强引用了,如果控件用strong,self->控件,这个控件有两个强引用,释放时要剪断两个对他的引用,如果有一个没有释放,这个控件就不能释放了,当然用strong也没有错,还更加安全呢。

3.block为什么用copy

block的方法内容是在栈区的,首先栈区是系统自动管理的,随时会清除内存,,再访问时可能会造成野指针,copy关键字会把block的内容复制到堆区,堆区由程序员自己管理。

相关文章

  • 属性copy.strong.weak总结

    1.NSString类型的属性为什么用copy ? NSString类型的属性可以用strong修饰,但会造成一些...

  • 属性总结

    [HideInInspector]在Unity脚本中这个声明之后,可以显示在面板操作参数之中,但是不能在面板中修改...

  • 7月26日

    UILabel的属性总结 文字自动换行属性 1.lineBreakModes UItableViewCell的属性...

  • 属性动画学习使用总结

    Android 属性动画总结 属性动画的优点 属性动画的使用步骤 实例化属性动画对象 设置属性动画的时长 启动属性...

  • 过渡、动画、转换(2D/3D)、渐变

    零:总结 手动触发-->改变属性 + transition属性说明=css过渡css写好触发->改变属性+ a...

  • 2018-12-06

    类的属性-总结 类属性,也是公有属性 类的私有属性 对象的公有属性 对象的私有属性 内置属性 函数的局部变量 全局...

  • React-Native flex 布局使用总结

    React Native flex 布局使用总结 父视图属性(容器属性): flexDirection : 对子...

  • 02 UIButton 和 UIImageView

    //UIButton和UIImageView常用属性和常用方法总结 //MARK: - UIButton常用属性和...

  • HTML中的meta标签常用属性及作用

    文章参考: HTML meta标签总结与属性使用介绍 和 HTML中的meta标签常用属性及其作用总结 在ht...

  • layout布局属性、标签属性总结大全

    Android layout布局属性、标签属性总结大全。 RelativeLayout 第一类:属性值为true...

网友评论

      本文标题:属性copy.strong.weak总结

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