ios中的变量和属性

在新手刚刚接触ios的时候会发现这样一个定义的方法

@interface MyViewController :UIViewController

{

UIButton *myButton;

}

@property (nonatomic, retain) UIButton *myButton;

@end

为输出口同时声明了属性和底层实例变量,这种语法是存在老版本的ios语法中,要求属性必须声明与之对应的实例变量。

但是,现在苹果将默认的编译器从GCC转换为LLVM(low level virtual machine),就不再需要为属性声明实例变量了,如果LLVM发现一个没有匹配实例变量的属性,它将自动创建一个以下划线开头的实例变量,例如上面的_myButton。

在.m文件中直接使用_myButton或者self.myButton。

但是如果没有属性的声明,只有实例变量的声明,那么在.m文件中就应该是使用self->myButton。

最后还有一个问题就是与@property对应的@synthesize方法在.m文件中声明后,可以直接使用myButton,未声明的情况下是_myButton。

最后斯坦福公开课白胡子老爷爷都是声明的属性,然后在.m文件中

if (!_myButton)

{

_myButton = [UIButton alloc]init];

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值