iOS基础篇-属性和实例变量

属性和实例变量的作用都是声明一个全局的变量,为了当前类中或其他类使用更加方便。

iOS 5之前使用GCC编译方式申明

属性:
@interface MyViewController {
    UIButton *_button;
}
@property (strong, nonatomic) UIButton *button; 
@synthesize button;// button = _button;

@end
/* GCC下申明属性必须要有对应的实例变量
   @synthesize作用:
   1.让编译器为你自动生成setter与getter方法
   2.可以指定与属性对应的实例变量
   使用synthesize制定属性对应的实例变量时,需要使用self->xxx才能访问对应的实例变量
   @synthesize button = _button 指定的实例变量,要与属性对应的实例变量相同
   否则使用self.button调用,编译器会告诉你,self.button = nil
*/

iOS 5之后,编译器从GCC转换为LLVM(low level virtual machine),使用LLVM(low level virtual machine),此后我们申明属性不在需要对应的实例变量,编译器会帮我们自动设置下划线_button,同时setter与getter方法同样编译器处理。

@interface MyViewController 
@property (strong, nonatomic) UIButton *button; 
@end

/*使用LLVM后,废弃之前的写法*/

你可能感兴趣的:(iOS基础篇-属性和实例变量)