zoukankan      html  css  js  c++  java
  • 点语法

    凡是符合系统默认setter、getter书写格式的方法都可以使⽤用点语 法。 

    #import "Student.h"
     
    @implementation Student
     
    - (void)setAge:(int)newAge {
        age = newAge;
    }
    - (int)age {
        return age;
    }
    @end
     
    #import <Foundation/Foundation.h>
    #import "Student.h"
     
    int main(int argc, const char * argv[])
    {
        @autoreleasepool {
            Student *stu = [[Student alloc] init];
     
           // 设置age的值
            stu.age = 10; // 等价于[stu setAge:10];
     
            // 取出age的值
            int age = stu.age; // 等价于int age = [stu age];
     
            NSLog(@"age is %i", age);
     
            [stu release];
        }
        return 0;
    }
     
    注意:在设置age的值时,将原来的[stu setAge:10]替换成stu.age = 10,两个式子完全等价,这也就是说,stu.age并不是直接访问stu对象的变量age,而是编译器遇到stu.age的时候,会自动将代码展开为[stu setAge:10]。直接访问应是stu->age,而非stu.age。
     stu.age = 10 [stu age]的转换过程类似。
     
    总结:OC点语法的本质是方法调用,不是直接访问成员变量。
    验证方法:在get与set方法中设置NSLog输出语句。
     
    点语法与self的陷阱:
    1 - (void)setAge:(int)newAge {
    2    self.age = newAge;
    3 }
    错误:会造成死循环。
    self.age相当于[self setAge:newAge];
    自身调用自身。。。。。

     

  • 相关阅读:
    T-SQL 查询数据库中各个表的使用空间
    T-SQL 拆分使用指定分隔符的字符串(split string)
    T-SQL 去除特定字段的前导0
    T-SQL 实现行转列
    T-SQL 将存储过程结果插入到表中
    T-SQL查看数据库恢复(RESTORE)时间
    Why Do We Need a Data Warehouse?
    T-SQL 常用DDL语句
    dedecms织梦笔记
    Lua 基础简明教程
  • 原文地址:https://www.cnblogs.com/Alling/p/3971899.html
Copyright © 2011-2022 走看看