Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.73 KB | None | 0 0
  1. @interface Person : NSObject
  2. /*
  3. {
  4. @public
  5. int _age;
  6. int age;
  7. }
  8.  
  9. */
  10.  
  11. /*
  12. 从Xcode4.4以后apple对@property进行了一个增强, 以后只要利用一个@property就可以同时生成setter/getter方法的声明和实现
  13. 没有告诉@property要将传入的参数赋值给谁, 默认@property会将传入的属性赋值给_开头的成员变量
  14.  
  15. @property有一个弊端: 它只会生成最简单的getter/setter方法的声明和实现, 并不会对传入的数据进行过滤
  16. 如果想对传入的数据进行过滤, 那么我们就必须重写getter/setter方法
  17. 如果不想对传入的数据进行过滤, 仅仅是提供一个方法给外界操作成员变量, 那么就可以使用@property
  18.  
  19. 如果利用@property来生成getter/setter方法, 那么我们可以不写成员变量, 系统会自动给我们生成一个_开头的成员变量
  20. 注意: @property自动帮我们生成的成员变量是一个私有的成员变量, 也就是说是在.m文件中生成的, 而不是在.h文件中生成的
  21. */
  22. // age? _age;
  23. /*
  24. - (void)setAge:(int)age;
  25. - (int)age;
  26. */
  27. @property int age;
  28.  
  29. @end
  30.  
  31. @implementation Person
  32.  
  33. /*
  34. - (void)setAge:(int)age
  35. {
  36. _age = age;
  37. }
  38. - (int)age
  39. {
  40. return _age;
  41. }
  42. */
  43.  
  44. // 如果重写了setter方法, 那么property就只会生成getter方法
  45. // 如果重写了getter方法, 那么property就只会生成setter方法
  46. // 如果同时重写了getter/setter方法, 那么property就不会自动帮我们生成私有的成员变量
  47. - (void)setAge:(int)age
  48. {
  49. if (age < 0) {
  50. age = 0;
  51. }
  52. _age = age;
  53. }
  54.  
  55. //- (int)age
  56. //{
  57. // return _age;
  58. //}
  59. @end
  60.  
  61.  
  62. @interface Person : NSObject
  63.  
  64. /*
  65. 如果给一个属性同时提供了getter/setter方法, 那么我们称这个属性为可读可写属性
  66. 如果只提供了getter方法, 那么我们称这个属性为只读属性
  67. 如果只提供了setter方法, 那么我们称这个属性为只写属性
  68. 如果既没有提供getter也没有提供setter方法, 那么我们称这个属性为私有属性
  69.  
  70.  
  71. 格式:
  72. @property(属性修饰符) 数据类型 变量名称;
  73. */
  74. // readwrite: 代表既生成getter方法 , 也生成setter方法
  75. // 默认情况下 @property就是readwrite的
  76. @property(readwrite) int age;
  77. /*
  78. - (void)setHeight:(double)height;
  79. - (double)height;
  80.  
  81. - (void)setHeight:(double)height;
  82. - (double)abc;
  83. */
  84. @property(getter=abc) double height;
  85.  
  86. /*
  87. - (void)setWeight:(double)weight;
  88. - (void)tiZhong:(double)weight;
  89. */
  90. @property(setter=tiZhong:) double weight;
  91. // readonly: 代表只生成getter方法不生成setter方法
  92. @property(readonly) NSString * name;
  93.  
  94. // 是否已婚
  95. // 程序员之间有一个约定, 一般情况下获取BOOL类型的属性的值, 我们都会将获取的方法名称改为isXXX
  96. @property(getter=isMarried) BOOL married;
  97. @end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement