A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© huh 中级黑马   /  2015-12-8 22:51  /  636 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

是什么?
     点语法还是方法的调用.点语法是Xcode编译器的一个功能!
有什么用?
    提供一种更方便的方式去调用属性!
怎么用?
    对象名.属性名(get方法)
    对象名.属性名 = 数据;(set方法)
用的时候注意什么?
    1,使用点语法的前提,成员变量的get方法,去掉get,直接属性名,但是set方法保持不变!
    2,点语法的本质还是方法的调用!
    3,点语法不能在set方法里面调用set方法,get方法里面调用get方法!(否则出现死循环)
        set方法里面可以调用get方法,前提是get方法里面没有调用set方法!
        get方法里面可以调用set方法,前提是set方法里面没有调用get方法!
    4,点语法可以调用普通方法,只要符合规则!(一般不这么用)
        规则就是,有声明 -(void)add; 有实现-(void)add{}
  1. Person.h
  2. #import <Foundation/Foundation.h>
  3. @interface Person : NSObject{
  4.     NSString *_name;
  5.     int _age;
  6.     double _high;
  7. }
  8. -(void) setName:(NSString *)name;
  9. //原有get方法:getName,点语法的get方法:name.
  10. -(NSString *)name;
  11. -(void) setAge:(int)age;
  12. -(int)age;
  13. -(void) setHigh:(double)high;
  14. -(double)high;
  15. -(void)setWeight:(double)weight;
  16. -(double)weight;
  17. -(void)add;
  18. @end
  19. Person.m
  20. #import "Person.h"
  21. @implementation Person
  22. #pragma mark name的set和get方法
  23. -(void) setName:(NSString *)name{
  24.    
  25.     _name = name;
  26.     //可以在set方法里面调用自己的get方法!(前提是get方法里面没有调用set方法,否则死循环)
  27.     //不可以在set方法里面调用,自己的set方法,会死循环!
  28.     //NSLog(@"名称:%@",self.name);
  29. }
  30. -(NSString *)name{
  31.     //可以在get方法里面调用自己的set方法!(前提是set方法里面没有get方法,否则死循环)
  32.     //不能在get方法里面调用,自己的get方法!否则进入死循环
  33.     self.name =@"haha"; //[self setName:@"haha"];
  34.     //self.name;
  35.     return _name;
  36. }
  37. #pragma mark - age的set和get方法
  38. -(void) setAge:(int)age{
  39.     _age = age;
  40. }
  41. -(int)age{
  42.     return _age;
  43. }
  44. #pragma mark - high的set和get方法
  45. -(void) setHigh:(double)high{
  46.     _high = high;
  47. }
  48. -(double)high{
  49.     return _high;
  50. }
  51. //点语法的get方法不用get成员变量名.而是直接用成员变量名.
  52. #pragma mark - weight
  53. -(void)setWeight:(double)weight{
  54.     NSLog(@"weight");
  55. }
  56. -(double)weight{
  57.     return 11.0;
  58. }
  59. #pragma mark - add
  60. -(void)add{
  61.     NSLog(@"add...");
  62. }
  63. main.n
  64. /*
  65. 29点语法的使用

  66. 1.直接用对象的指针名.(去掉get或set的)方法名.
  67. 2.前题:成员变量的get方法,不再需要get,但set方法保持不变.

  68. 本质:
  69. 点语法本质还是方法调用.去调用的类中定义的set get方法(get方法不需要前面加get);
  70. 点语法Xcode编译器的一个功能.本质上还是去调用方法.
  71. 提供一种更方便的方式去操作属性.

  72. 两个要注意的问题:
  73. 1.不能在set或get方法里用点语法调用自已.否则会出现死循环.
  74.     说明:1)在set方法里面调用set方法不可以(self.name =@"huh"),会出现死循环!
  75.         2)在set方法里面可以调用get方法,前提是get方法里面,没有调用set方法,否则死循环!
  76. 2.点语法可以调用普通方法,只要符合规则.但是不要这么做.
  77.     规则是什么?
  78.         有声明 -(void)add;
  79.         有实现 -(void)add{}
  80. */
  81. #import <Foundation/Foundation.h>
  82. #import "Person.h"
  83. int main(int argc, const char * argv[]) {
  84.     Person *per = [Person new];
  85.     [per setName:@"huh2"];
  86.     [per setAge:32];
  87.     [per setHigh:1.72];
  88.     NSLog(@"姓名:%@,年龄:%d,身高:%.3f",[per name],[per age],[per high]);
  89.    
  90.     //点语法
  91.     per.name = @"huh";
  92.     per.age = 23;
  93.     per.high = 1.70;
  94.     NSLog(@"姓名:%@,年龄:%d,身高:%.3f",per.name,per.age,per.high);
  95.     per.add;
  96.     return 0;
  97. }
复制代码


3 个回复

倒序浏览
先顶一下~以后用得着~
回复 使用道具 举报
必须要点赞,顶一个
回复 使用道具 举报
赞一个,很有用
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马