美文网首页
@property 详解2

@property 详解2

作者: StonesMonkey | 来源:发表于2016-09-18 14:32 被阅读19次

@property 详解1讲解了@property内部做了的3件事以及它的两个属性的作用。

下面我们讲解一下修饰词有些地方也叫属性特质。我们创建一个SMPerson类,再用@property给它声明一个name属性.

图1:声明一个SMPerson类,给它声明一个name属性

注意这里我们没有用修饰词,其实,内部@property是给了它修饰词的,具体如下:

图2:这个效果和上面的效果一样

具体分解我们下面会写,此时我们应该知道使用属性时,@property内部会为name 编写编译器对其产生的存取方法的特性。

属性可以拥有以下特性:

原子性:

atomic: 原子性,默认情况下是加同步锁的,保证数据一致性,但是这样的坏处就是消耗的资源较多,运行较缓慢
nonatomic: 非原子性,线程不安全,运行速度快。

你会发现,所有属性都声明为nonatomic。这样做是有历史原因的,在iOS开发中,同步锁使用开发较大,会带来性能问题,但是这样做在Mac OS X开发中就不会出现瓶颈,简单的理解就是,iphone 现在最好的A10处理器也才2G,而mac电脑现在至少都8G内存,当然这还有另外的处理器品牌特性等问题。

内存管理修饰词

其中我们知道@property会给我们自动生成setter和getter方法,熟悉MRC的人就知道,不同的修饰词在release和retain的时候,所产生的setter和getter方法出来的形式是不一样的,这里建议虽然现在我们极少运用MRC来编写代码,但是为来更好的理解ARC还是有必要熟悉一下MRC。下文知针对ARC环境下编写,MRC略有不同不详尽概述

assign: 用来修饰基本数据类型或者说非OC对象
strong: 用来修饰OC对象
copy: 一般我们用到的是用来修饰NSString类型和block类型
weak: 当我们防治循环引用的时候运用。

注意: assign strong copy weak不会只有这里说的那么简单,这里只是说一个大概,每一个的用法都多种多样,尤其是copy和weak的内部实现,MRC中assign 和retain等,都是值得我们琢磨很久。 具体大家想了解可以参照<招聘一个靠谱的iOS>这里说的看一下

方法名:

请原谅我偷懒.图片26页来源于<<Effective Objective - C 2.0>>


图3

要点:
+ iOS开发过程中,用@property做属性申明的时候我们一律用nonatomic,不要用atomic或者不写

相关文章

  • @property 详解2

    @property 详解1讲解了@property内部做了的3件事以及它的两个属性的作用。 下面我们讲解一下修饰词...

  • python @property

    参考 Python进阶之“属性(property)”详解 - Python - 伯乐在线

  • iOS开发---属性关键字详解

    iOS开发—属性关键字详解 @Property 什么是属性? 属性(property)是Objective-C的一...

  • property and ivar 详解

    property and ivar 详解 简述 ivar 全名叫做 instance variable, 即实例变...

  • Masonry 控件详解

    Masonry 控件详解 1.Masonry的属性 @property (nonatomic,strong,rea...

  • CAEmitterLayer-粒子效果属性记录

    CAEmitterLayer---属性详解 /*这里面是粒子发射单元的集合. */ @property(nulla...

  • iOS property详解

    property是OC的一项特性,主要的作用在于封装对象中的数据。官方文档对property的定义是: A dec...

  • @property 详解1

    我们申请一个类,在这个类如Person的时候申请一个属性,我们习惯性使用@property,如: @propert...

  • Python @property 详解

    类方法转为只读属性 重新实现属性的setter, getter, deleter方法 类方法转为只读属性 pro...

  • Python @property 详解

    一、概述 python中 @property 是python的一种装饰器,是用来修饰方法的。我们可以使用@pro...

网友评论

      本文标题:@property 详解2

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