IOS property属性详细介绍使用注意事项

 更新时间:2017年02月28日 17:13:31   投稿:lqh  
这篇文章主要介绍了IOS property属性详细介绍使用注意事项的相关资料,需要的朋友可以参考下

IOS property属性

原子性

  • atomic
  • nonatomic

访问权限

  • readWrite
  • readOnly

内存管理

  • strong
  • retain
  • copy
  • assign
  • weak
  • unsafe_unretained

方法命名

  • getter = <name>
  • setter = <name>

结论

1、原子性

     (1)atomic

               原子性,可以理解成就是生成getter、setter方法时,编译器会自动为程序添加同步锁,减少因为在不同的线程中同时对同一个内存地址进行读写操作,而产生的二意性、数据混乱的情况。

               但同步锁也不能一定保证能完全阻止同时读写的情况发生,而且同步锁会耗费较多资源,降低程序的效率,因此不建议使用,但atomic是默认的特性。

     (2)nonatomic

               非原子性,也就是不添加同步锁,读写效率会高,但需要开发人员注意同时读写的情况,可以使用gcd的栏栅和同步方法来保证。

2、访问权限

     (1)readWrite

               生成getter、setter方法,并生成实例变量指针,但对于静态库类是无法修改的,所以即使能进入头文件也无法修改。

     (2)readOnly

               只生成getter方法,可以用于数据保护,在interface中把属性声明了readOnly,在continue-class中再把属性声明为readWrite,就能实现私有属性的效果,从而有更好的封装特性,但其实通过KVC

               依然可以从外部修改属性,但不建议这样使用。

3、内存管理

     (1)strong:strong是推出ARC自动计数后后添加的属性,效果与retain基本一致,都是在setter方法中,对旧数值release,对新数值retain。
     (2)retain与strong基本一致
     (3)assign:简单赋值操作,通常针对普通类型,既不release,也不retain
     (4)copy:能更好实现上下文环境保护。对旧值release,对新值进行copy操作,immutable+copy = 不可变浅复制,mutable+copy = 不可变深复制。
     (5)weak:weak特性,并不会持有对象,当指向对象的指针全撤销后,对象释放,指针置nil,这常用于block的保留环
     (6)unsafe_unretained:不会持有对象,但引用对象,对象释放后,会产生野指针,主要用于兼容以前的方法。

4、方法命名

     (1)getter = <name>

                属性生成的默认getter方法名:属性名

     (2)setter = <name>

               属性生成的默认getter方法名:set+属性名

5、结论

     属性不是随便填写的,需要严格根据该属性在程序中的作用,再选择。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • iOS中利用KeyChain保存用户信息的方法示例

    iOS中利用KeyChain保存用户信息的方法示例

    有用户就用用户名和密码,而现在的应用都少不了一个保存用户名和密码用于自动登录的功能,本文介绍使用iOS自带的Keychain方法保存用户名和密码信息的相关资料,需要的朋友可以参考参考借鉴,下面来一起看看吧。
    2017-06-06
  • iOS开发教程之UIView和UIViewController的生命周期详解

    iOS开发教程之UIView和UIViewController的生命周期详解

    UIViewController是IOS程序中的一个重要组成部分,下面这篇文章主要给大家介绍了关于iOS开发教程之UIView和UIViewController的生命周期的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-04-04
  • iOS适配https证书问题(AFNetworking3.0为例)

    iOS适配https证书问题(AFNetworking3.0为例)

    本篇文章主要介绍了iOS适配https问题(AFNetworking3.0为例)。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • 详解iOS Project和Targets配置

    详解iOS Project和Targets配置

    本篇文章给大家分享了一篇关于在IOS中配置Project和Targets的相关文章,有这方面需要的朋友参考下吧。
    2018-01-01
  • Xcode提高开发效率的代码块分享

    Xcode提高开发效率的代码块分享

    这篇文章跟大家介绍的是一些提高大家开发效率Xcode的代码块,以及如何备份代码块,Xcode的代码片段(Code Snippets)创建自定义的代码片段,当你重用这些代码片段时,会给你带来很大的方便。有需要的朋友们可以参考借鉴。
    2016-09-09
  • iOS动态调整UILabel高度的几种方法

    iOS动态调整UILabel高度的几种方法

    在iOS编程中UILabel是一个常用的控件,下面这篇文章主要给大家介绍了关于iOS动态调整UILabel高度的几种方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-12-12
  • UITableViewCell在编辑状态下背景颜色的修改方法

    UITableViewCell在编辑状态下背景颜色的修改方法

    这篇文章主要给大家介绍了关于UITableViewCell在编辑状态下背景颜色的修改方法,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编一起来学习学习吧。
    2017-07-07
  • iOS开发中使用UIScrollView实现图片轮播和点击加载

    iOS开发中使用UIScrollView实现图片轮播和点击加载

    这篇文章主要介绍了iOS开发中使用UIScrollView实现图片轮播和点击加载的方法,代码基于传统的Objective-C,需要的朋友可以参考下
    2015-12-12
  • iOS 解决按钮背景图片拉伸问题(推荐)

    iOS 解决按钮背景图片拉伸问题(推荐)

    这篇文章主要介绍了iOS 解决按钮背景图片拉伸问题(推荐),需要的朋友可以参考下
    2017-10-10
  • iOS实现简单的头部缩放功能

    iOS实现简单的头部缩放功能

    这篇文章主要介绍了iOS 简单的头部缩放效果,头部伴随模糊效果放大缩小,并在一定位置时悬停充当导航栏,本文给大家提供实现思路,需要的朋友可以参考下
    2018-08-08

最新评论