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

http://www.chirenhua.com/ios%E5%BC%80%E5%8F%91-%E5%9C%A8interfaceimplementation%E5%92%8Cproperty%E4%B8%AD%E5%8F%98%E9%87%8F%E7%9A%84%E5%AE%9A%E4%B9%89/?utm_source=tuicool&utm_medium=referral

一直搞不懂在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会自动帮你定义一个以下划线打头的和属性同名的内部变量,所以你不需要另外再定义了.


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值