zoukankan      html  css  js  c++  java
  • @property增强

    1.@property增强

    • 自从Xcode 4.x后,@property可以同时生成setter和getter的声明和实现
    @interface Person : NSObject
    {
        int _age;
    }
    @property int age;
    @end

    2.@property增强注意点

    • 默认情况下,setter和getter方法中的实现,会去访问下划线 _ 开头的成员变量。
    @interface Person : NSObject
    {
        @public
        int _age;
        int age;
    }
    @property int age;
    
    @end
    
    int main(int argc, const char * argv[]) {
    
        Person *p = [Person new];
        [p setAge:30];
        NSLog(@"age = %i, _age = %i", p->age, p->_age);
    
        return 0;
    }
    • 如果没有会自动生成一个_开头的成员变量,自动生成的成员变量是私有变量, 声明在.m中,在其它文件中无法查看,但当可以在本类中查看
    • @property只会生成最简单的getter/setter方法,而不会进行数据判断
    Person *p = [Person new];
    [p setAge:-10];
    NSLog(@"age = %i", [p age]);

    如果需要对数据进行判断需要我们之间重写getter/setter方法

    • 若手动实现了setter方法,编译器就只会自动生成getter方法
    • 若手动实现了getter方法,编译器就只会自动生成setter方法
    • 若同时手动实现了setter和getter方法,编译器就不会自动生成不存在的成员变量
  • 相关阅读:
    django 笔记4 数据库操作
    html关于不换行代码
    之前搭建的jenkins的一些笔记
    pip报错
    ssh 免密及加密远程脚本实现
    今天了解了些redis和memcached的知识
    django 笔记3
    来选择一款适合你网站的CMS建站程序吧
    如何预防和检测网页挂马?
    网页挂马方式
  • 原文地址:https://www.cnblogs.com/xufengyuan/p/6574137.html
Copyright © 2011-2022 走看看