• OC中的点语法,成员变量的作用域


    点语法

    点语法本质是函数的调用,不是像java中那样,是用来访问成员变量的;oc中访问成员变量是用 -> 访问的;

    Person *p = [Person new];

    p.age = 10; // 如果点语法是进行了赋值操作,那么就相当于调用了setter方法;

    [p.age]; // 这样不赋值相当于调用了getter;

    注意点:

    尽量不要在setter或getter中调用点语法,容易引发死循环;死循环是由于递归调用引发的;

    // 在setter调用点语法
    
    - (void)setAge:(int)age
    {
         _age = age;
         self.age = 10;  // 这个setter会无限重复的递归,而没有递归结束的条件;
    }

     成员变量的作用域:或者叫权限修饰符

    注意理解“直接访问”这四个字,是指通过对象名直接访问,不是通过setter和geter,这样就不叫直接访问了;

    @public :任何地方都能直接访问对象的成员变量

    @private:只能在本类的对象方法中直接访问,需要注意子类虽然不能直接访问,但是子类任然具有该属性,科通过父类的getter和setter访问

    @protected:能在本类和子类的对象方法中直接访问

    @package:在同一个框架中可以直接访问

    没有添加任何修饰符,直接定义的成员变量,默认是protected,前提是这个成员变量是定义在@interface中的,注意在@implementation中也可以定义成员变量,而在这里定义的成员变量默认是@private,因为.m文件是不会被别人包含的;但是在implementation中声明的成员变量是不能和@interface中的成员变量重名的;

  • 相关阅读:
    浅谈线段树
    浅谈KMP
    20200729线上模拟题解
    20200727线上模拟题解
    声明
    tarjan--割点,缩点
    20201029模拟
    高精模板
    二分图--二分图的几种模型
    树的直径与树的重心
  • 原文地址:https://www.cnblogs.com/cxbblog/p/3720604.html
Copyright © 2020-2023  润新知