网站建设资讯

NEWS

网站建设资讯

OC基础之-Property(属性)和点语法-创新互联

  1. 学习属性之前回忆一下之前学到的setter方法和getter方法:

    成都创新互联公司专注于企业全网整合营销推广、网站重做改版、平邑网站定制设计、自适应品牌网站建设、H5响应式网站商城网站建设、集团公司官网建设、外贸营销网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为平邑等各大城市提供网站开发制作服务。

    (1)setter方法的作用:用来为单一的实例变量赋值(只能是一个实例变量,多了的叫做get方法)

    (2)setter方法的写法标准: - 号方法,  无返回值,  名字以set开头+要设置的变量的实例变量名(首字母需大写):(setter方法有且只有一个参数)+参数的类型(和实例变量的类型相同)+参数名(和实例变量名相同)

    (3)getter方法的作用:用来获取单一实例变量的值.

    (4)getter方法的写法标准: - 号方法,  有返回值(返回值类型和实例变量类型相同)  方法名直接和实例变量名相同 无参数

  2. 当实例变量较多的时候,用setter方法和getter方法会很不方便,代码量也加大,所以就有了属性的出现.属性是OC2.0之后出来的新的语法,用来替代setter和getter方法,使用属性可以快速创建setter和getter方法的声明,以及setter和getter方法的实现.此外,属性还添加了对实例变量操作的安全处理.

    (1)属性的写法标准: @property(用来定义属性)  属性的类型(和实例变量的类型相同)  属性名(和实例变量名相同)

    (2)注意:@property  知识自动声明setter和getter方法的声明

  3. 属性的三大特性:

    (1)第一大特性:读写特性

       readonly  告诉编译器,属性在自动生成方法时,只会生成getter方法,不会生成setter方法

       readwrite  告诉编译器,属性在自动生成方法时,既要生成setter方法,也要生成getter方法,为系统默认的读写特性.

       setter = aa;  告诉编译器,当自动生成setter方法时,setter方法的方法名为指定的名字aa,而不采用默认的

       getter = bb;  告诉编译器,当自动生成getter方法时,getter方法的方法名为指定的名字bb,而不是采用默认的

    (2)第二大特性:原子性特性

       atomic : 原子特性,保证线程安全,内部做了安全处理(枷锁与解锁).为系统默认的原子特性.

       nonatomic : 非原子性,不保证线程的安全,因为对于setter和getter方法的使用,比较频繁,在一段时间内可能要多次访问,所以使用atomic会非常消耗系统的资源,降低程序的执行效率,使用nonatomic虽然不能保证线程的安全,但是一般情况下得使用都是安全的,所以对于原子特性,使用nonatomic

    (3)第三大特性:语义特性

       assign : 直接赋值,针对于基本数据类型使用,也可以针对对象类型使用,为系统默认的语义特性

       copy : 针对对象类型使用,并且要服从NSCopying协议的对象才可以,会复制出一个新的对象,拥有新的对象所有权(引用计数+1)(暂时理解到这里)

       retain : 针对对象类型使用,会造成对象的引用计数+1.

  4. 属性的实现:

    (1)写法标准:@synthesize  属性名  =  实例变量(指定的setter和getter方法内部所要操作的实例变量)

    (2)如果标准写法中指定的实例变量没有定义,系统会自动生成指定的实例变量,但是生成的实例变量是私有的,子类不能直接访问,如果实例变量想让子类访问,那么在.h文件中必须定义实例变量.

    (3)如果未指定setter和getter内部所要访问的实例变量时,系统会自动生成一个和属性名一样的实例变量.

    (4)对于setter和getter方法,如果我们实现了,系统就不会再自动生成

    (5)如果在.m文件中未通过@synthesize对属性进行合成,系统会自动合成,只不过此时系统默认的setter和getter方法内部所操作的实例变量是 _属性名

    (6)如果将@synthesize省略,我们自己实现setter和getter方法时,系统就不会生成对应的setter和getter方法,以及实例变量.

    (7)常用的是只在.h文件中声明属性,其他的系统自动生生成.

  5. 点语法,是一种快速访问setter和getter方法的方式(类似于之前的结构体变量访问结构体成员)

    写法标准:对象名.属性名  -----如果放在等号的左边,就是调用setter方法,其他情况都是调用getter方法

  6. 声明属性时默认生成对应的setter和getter方法,所以属性和setter及getter方法都有关联.

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享标题:OC基础之-Property(属性)和点语法-创新互联
地址分享:http://cdweb.net/article/cccheh.html