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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 翟宇浩 中级黑马   /  2015-9-7 15:32  /  610 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 翟宇浩 于 2015-9-7 15:36 编辑

// 此处略去Person.h和Person.m文件


#import <Foundation/Foundation.h>
#import "Person.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {

        Person *p = [Person new];
//        [p setName:@"李白"];
//        [p setAge:10];
        //点语法是Xcode的特性,Xcode帮我们做代码替换
        //点语法,通过  对象.属性名
                   //此时(p.age)并不是直接访问实例变量,而是Xcode看到点语法(p.age)后
        //帮我们自动替换成  p.age--->替换  [p setAge:18]
        p.age = 18;
        p.name = @"杜甫";
//        int a = [p age];
//        NSString *str = [p name];
        int a = p.age;
        NSString *str = p.name;
        //注意,此处p.age出现在等号右侧
        //实际上,当Xcode看到p.age出现在等号右侧后
        //他会帮我们把 p.age --->替换成 [p age];
        NSLog(@"\n名字:%@",str);
        NSLog(@"\n年龄:%d",a);

    /*

         强调:p.age替换成get方法和set方法,一般取决于p.age出现在等号的左侧还是右侧(是设置值,还是取值)
         如果在左侧,是设置值
         在右侧是取值
         也要根据出现的语境判断替换类型
         比如:  NSLog (@"%d",p.age);  此时替换的是get方法

         注意事项:

         oc中得self不能用在如下情况,否则会造成无限循环
           -(void)setAge:(int)NewAge{
               self.age = NewAge;
           }
         即相当于:
           -(void)setAge:(int)newAge{
               [self setAge:newAge];
           }

         在get方法中,return self.age,相当于  [self age]; 同样是无限循环

         点语法的本事是方法的调用,而不是访问成员变量,当使用点语法时,编译器会自动展开相应的方法。切记点语法的本质是转换成set和get方法,如果没有set和get方法,则不能使用点语法。

         */
    }
    return 0;
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马