oc 零散知识 下划线 property synthesize
来源:互联网 发布:pass软件使用手册 编辑:程序博客网 时间:2024/06/15 02:50
一. 下划线_
众所周知现在_属性用来访问属性,而不是调用get方法,可是在以前并不是这样。
所以之前访问属性没有下划线,而且还必须要有与之对应的成员变量。然后就有一个有意思的现象,所以为了能够兼容之前老的xcode,
有很多框架都是这样写的。
另外说一下 _属性和成员变量(本身就有下划线),这样做的目的是让其与局部变量区分,声明属性之后,xcode会自己生成一个带下划线成员变量。
二.property synthesize关键字
还是有历史原因,之前的propery只是对声明的属性做set get方法的声明,并没有实现,这个时候synthesize关键字跟property是配套出现的,synthesize是对相应的属性进行set get方法的实现。然而也不知道从什么时候起,property(...),括号里默认是有readwrite这个关键字的。也就是说property声明属性时,编译器会自动根据readonly readwrite(默认)生成set get方法。synthesize这个作用是废了,但是还有其他作用啊。
@synthesize name; 这样写表示在.m文件访问这个属性时,只能用name,和self.name(个人觉得没用)。
因为在Xcode4.5及以后的版本中,可以省略@synthesize ,编译器会自动帮你加上getter 和 setter 方法的实现,并且默认会去访问
_name这个成员变量,如果找不到_name这个成员变量,会自动生成一个叫做 _name的私有成员变量。
也就是说编辑器很聪明,最后他会帮我们生成一对一配套的成员变量和属性。并且会有相应的set get方法。
@synthesize name = _name;这个还是有一点用,如果你的成员变量和属性名有一个相同的话,如上述(下划线_)情况,那么就可以把成员变量和属性名合并,用_name和self.name访问。
三.IOS 成员变量,全局变量,局部变量定义,static与extern的区别1,先说定义
#import "S1ViewController.h"
@interface S1ViewController ()
//这里做声明
@end
@implementation S1ViewController
@end
@interface S1ViewController : UIViewController
{
}
@property(nonatomic,retain) NSString* sttr2;
@end
注明:在h文件中定义的变量,在外部可见
.h声明了类,相当于java的接口,在这里interface块外声明的函数和属性都是外部可见的,但是在块内的貌似是私有的
.m里面的所有东西都是对外封闭的
//规范的
static
NSString*sttr1=@"S1ViewController";//全局变量
@implementation
@end
//不规范的
@implementation S1ViewController
static int hu=3;//全局变量
NSString*sttr1=@"S1ViewController";//全局变量
例如:
总结:以后写代码,只需要用property就够了,他会自动补上成员变量和set get方法,简单多了吧。
- oc 零散知识 下划线 property synthesize
- Oc属性 @property @synthesize
- OC-@property和@synthesize理解
- OC点语法、@property、@synthesize
- OC @property 和 @synthesize 关键字
- OC关键字@Category@property@synthesize
- OC-@property和@synthesize理解
- OC-@property和@synthesize关键字
- OC之@property和@synthesize
- oc中关于property和synthesize
- OC学习之@property和@synthesize用法
- OC学习那些事:@property和@synthesize
- 黑马视频学习笔记-OC-property、synthesize
- oc点语法和@property @synthesize
- OC之@property @synthesize用法详解
- OC语言@property @synthesize和id
- OC中的@property、@synthesize和id
- OC学习之@property与@synthesize理解
- Android用surface直接显示yuv数据(二)
- java判断list为空
- 传递还是值传递
- mybatis学习笔记之学习目录(1)
- Java螺旋矩阵算法
- oc 零散知识 下划线 property synthesize
- 比较好的一些技术参考博客
- 基于CMPP2.0的Socket客户端(Java) - JAVA编程语言
- Java对Map排序
- RAM、NAND Flash、NOR Flash的区别详解
- SecureCRT中文乱码解决方法
- null可以被强制类型转换成任意类型的对象
- ActiveAdmin国际化
- NOI2014 动物园