OC属性总结-创新互联

  1.     setter 方法的作用:为单一的变量赋值.

    成都创新互联专注于通化县企业网站建设,响应式网站开发,购物商城网站建设。通化县网站建设公司,为通化县等地区提供建站服务。全流程按需求定制设计,专业设计,全程项目跟踪,成都创新互联专业和态度为您提供的服务
  2.     setter 方法规范写法:1.- 号方法,无返回值.

  3.     名字以set开头 + 要设置的变量的实例变量名(首字母要大写):(setter方法有且只有一个参数) + 参数的类型(和实例变量类型相同) + 参数名(和实例变量名相同)

  4.     getter 方法的作用:获取单一的实例变量的值.

  5.     getter 方法的命名规范: - 号方法,有返回值 (返回值类型和实例变量类型相同) 方法名直接和实例变量名相同.   无参数.

  6. 属性

  7. [objc] view plaincopyprint?

  8.     属性是OC2.0之后出来的新的语法,用来替代

  9.     setter以及getter方法,使用属性可以快速创建setter以及getter方法的声明,setter以及getter方法的实现.另外还添加了对实例变量操作的安全处理

  10.     @property用来定义属性

  11.     NSString * 属性的类型(和实例变量类型相同)

  12.     name 属性名(和实例变量名相同)

  13.     切记:@property只是自动声明setter以及getter 方法的声明

  14.     属性的定义:

  15.     属性的声明:使用@property 声明属性例如:(@property NSString *name;)

  16. [objc] view plaincopyprint?

  17.     相当于 @interface 中声明了两个方法:

  18.     - (void)setName :(NSString *)name;

  19.     - (NSString *)name;

  20. [objc] view plaincopyprint?

  21.     属性的实现:使用@synthesize 实现属性(例如:@synthesize name = _name)

  22. [objc] view plaincopyprint?

  23.     相当于@implementation实现了

  24.     - (void)setName:(NSString *)name;

  25.     - (NSString *)name;

  26. @synthesize name = _name;

  27. [objc] view plaincopyprint?

  28.     注释:

  29.     @synthesize  属性的实现部分,实现属性自动生成的setter 以及 getter方法.

  30.     name  属性名,指定要实现哪一个属性生成的setter 以及 getter 方法

  31.     _name,指定setter 和 getter方法内部所要操作的实例变量

  32. 如果 指定的实例变量没有定义,系统会自动生成指定的实例变量 ,但是生成的实例变量是私有的,子类不能直接访问

  33. 如果实例变量想让子类访问, 那在.h文件必须定义实例变量.

  34. 如果未指定setter 和 getter 内部所要访问的实例变量时, 系统自动生成一个和属性名一样的实例变量    例如:@synthesize name, gender, age, height, weight;

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

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

  37. 如果将@synthesize省略,并且我们自己实现setter以及 getter方法时, 系统就不会生成对应setter以及 getter,还有实例变量

  38. 属性的特性(attribute)

  39.     第一大特性:读写特性

  40.     (1)readonly:告诉编译器,属性在自动生成方法时,只会生成getter方法,不会生成setter方法.

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

  42.     (3)setter = aa: 告诉编译器,当自动生成setter方法时,setter方法的方法名为指定的名字aa,不采用默认的.

  43.     (4)getter = bb: 告诉编译器,当自动生成getter方法时,getter方法的方法名为指定的名字bb,不采用默认的.

  44.     第二大特性:原子性特性

  45.     (1)atomic: 原子特性,保证线程安全,内部做了安全性访问理(加锁与解锁).系统默认的原子特性

  46.     (2)nonatomic:非原子性,不保证线程安全

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

  48.     第三大特性:语义特性

  49.     (1)assign: 直接赋值,使用针对于基本数据类型(int float).也可针对于对象类型.系统默认的语义特性.

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

  51.     (3)retain:针对于对象类型,会造成对象的引用计数+ 1

  52. [objc] view plaincopyprint?

  53.     1.当把语义特性声明为assign时, setter 以及 getter 方法内部实现

  54.     - (void)setName:(NSString *)name

  55.     {

  56.         _name = name;

  57.     }

  58.     - (NSString *)name

  59.     {

  60.         return _name;

  61.     }

  62.     2.当把语义特性声明为retain时, setter 以及 getter 方法内部实现

  63.     - (void)setName:(NSString *)name

  64.     {

  65.         if (_name != name) {

  66.             [_name release];

  67.             _name = [name retain];

  68.         }

  69.     }

  70.     - (NSString *)name

  71.     {

  72.         return [[_name retain] autorelease];

  73.     }

  74.     3.当把语义特性声明为copy时, setter 以及 getter 方法内部实现

  75.     - (void)setName:(NSString *)name

  76.     {

  77.         if (_name != name) {

  78.             [_name release];

  79.             _name = [name copy];

  80.         }

  81.     }

  82.     - (NSString *)name

  83.     {

  84.         return [[_name retain] autorelease];

  85.     }

  86. 点语法

  87. 点语法 ,是一种快速访问 setter以及 getter 方法的方式.声明属性默认生成对应的setter以及 getter方法.所以属性和setter和 getter方法都有关联

  88. 对象.属性名  ---如果在等号的左边,意味着调用setter方法,除此情况,都是调用getter方法

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


本文名称:OC属性总结-创新互联
新闻来源:http://scjbc.cn/article/jioed.html

其他资讯