• iOS开发—在@interface,@implementation和@property中变量的定义


    一直搞不懂在OC中变量在@interface和@implementation中有什么区别,定义@property又有什么不同,查了很多资料,总结如下:

    //ViewController.h
    @interface ViewController : UIViewController {
        NSInteger a;
    }
    
    @property (nonatomic,assign) NSInteger b;
    
    @end
    
    //ViewController.m
    @interface ProductsViewController () {
        NSInteger c;
    }
    
    @property (nonatomic,assign) NSInteger d;
    
    @end

    a,b,c,d这四个变量有什么不同?

    a是成员变量,相当于java中的protected,可以被子类继承。

    b相当于java中的public,既可以被子类继承,也可以被外部访问。

    c和d个人理解都是私有变量,相当于java中的private,不可以被子类调用,也不可以外部访问。

    b 和 d 可以用 self.来访问, a和c不能。

    a和c基本上很少用,一般都用b和d,如果需要对外开放的属性的就放在b,不需要的话直接在d位置定义。

    a和c我觉的应该是为了兼容早期版本的写法,为了让你自己定义属性对应的内部变量,但是在arc之后的版本中,你只要定义一个属相,xcode会自动帮你定义一个以下划线打头的和属性同名的内部变量,所以你不需要另外再定义了.

  • 相关阅读:
    数组集合之间的转换
    eclipse 大小写转换
    Linux下查看文件内容的命令
    linux常用命令:创建文件和文件夹
    Error Downloading Packages: yum更新出现错误
    XShell上传文件到Linux服务器上
    linux最常用的20个命令
    Sonar理论篇
    如何查看DLL文件的函数列表
    C++在C的基础上的扩充
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/7084427.html
Copyright © 2020-2023  润新知