iOS中使用点语法
2015-07-06 21:23
295 查看
在实际的开发过程中,用点语法,绝对是加快开发过程的一个好帮手,废话不多说,开始上代码
1:在ios中使用点语法必须配置的关键字@property
在ios开发过程中只要有这个关键字的,包括任何类库中的有该词修饰的都可以用点语法使用.看一下具体的语法
这里写一下括号里的关键字,不做仔细介绍.
nonatomic 是表示非原子性,是原子性的时候则和线程有关...
retain,具体修饰后面的数据
总结如下
nsstring...... 用copy
nsarry.........用strong
uicontrol.....用weak
这一点很重要.
2:帮助我们生产的有哪些东东
用了@property的时候,Xcode会帮助我们生成两端代码
2.1:第一段 @synthesize 属性名 = _属性名,并且生产的变量是@private的,其他类不能查看和访问
2.2:第二段 会对应的生成 getter和setter方法
2.3:注意:在用@property声明变量的时候 不要加下划线.
3:看一下Xcode生产的setter和getter方法
新建一个类
声明变量
.h文件如下
.m文件如下
在上面的时候说过用@property修饰过的数据类型会自动生产getter和setter方法,上面就是具体的实现了具体过程的方法.
4:调用
在这里就可以用点语法来使用了
5: 用synthesize来重写
5.1在.h文件中声明了一个变量
@property(nonatomic,copy)NSString *juner;
在main.m中调用的时候用点语法就可以出来
5.2在.m文件中用synthesize重新制定juner的属性生产的变量名
@synthesize sex = _testSex;
然后在写setJuner的时候就要改变了
这样就重新制定了生产的变量名.
6:用kvc的方法
给实列变量赋值
在上述代码中的第三行speed的变量在.h文件中是没有声明的,这时候就会报错,那怎么解决了
这就是在获取错误的时候,会抓取异常,不会让程序奔溃了
1:在ios中使用点语法必须配置的关键字@property
在ios开发过程中只要有这个关键字的,包括任何类库中的有该词修饰的都可以用点语法使用.看一下具体的语法
@property(nonatomic,retain) NSString *names;
这里写一下括号里的关键字,不做仔细介绍.
nonatomic 是表示非原子性,是原子性的时候则和线程有关...
retain,具体修饰后面的数据
总结如下
nsstring...... 用copy
nsarry.........用strong
uicontrol.....用weak
这一点很重要.
2:帮助我们生产的有哪些东东
用了@property的时候,Xcode会帮助我们生成两端代码
2.1:第一段 @synthesize 属性名 = _属性名,并且生产的变量是@private的,其他类不能查看和访问
2.2:第二段 会对应的生成 getter和setter方法
2.3:注意:在用@property声明变量的时候 不要加下划线.
3:看一下Xcode生产的setter和getter方法
新建一个类
声明变量
.h文件如下
/** * 年龄 */ @property(nonatomic,assign) NSInteger ages; /** * 姓名 */ @property(nonatomic,retain) NSString *names; /** * 毕业院校 */ @property(nonatomic,copy) NSString *school;
.m文件如下
@synthesize ages = _ages; @synthesize names = _names; @synthesize school = _school; /** * 用nsinter来看set和get方法 * * @param ages <#ages description#> */ - (void)setAges:(NSInteger)ages { _ages = ages; } - (NSInteger)ages { return _ages; } /** * 看retain的get和set方法 * * @param names <#names description#> */ - (void)setNames:(NSString *)names { //判断原值和新值是否相等 if (_names != names) { //如果不一样释放原值 [_names release]; //将新值付给原值 _names = [names retain]; } } - (NSString *)names { return [[_names retain] autorelease]; } /** * 看copy的get和set方法 * * @param school <#school description#> */ - (void)setSchool:(NSString *)school { //判断原值和新值是否相等 if (_school != school) { //如果不一样释放原值 [_school release]; //将新值付给原值 _school = [school copy]; } } - (NSString *)school { return [[_school retain] autorelease]; } @end
在上面的时候说过用@property修饰过的数据类型会自动生产getter和setter方法,上面就是具体的实现了具体过程的方法.
4:调用
Student *stu = [[Student alloc] init]; stu.names = @"刘伯温"; stu.schools = @"朱元璋大学"; NSLog(@"%@---%@",stu.names,stu.schools);
在这里就可以用点语法来使用了
5: 用synthesize来重写
5.1在.h文件中声明了一个变量
@property(nonatomic,copy)NSString *juner;
在main.m中调用的时候用点语法就可以出来
Student *stu = [[Student alloc] init]; stu.juner = @"要重写的变量"; NSLog(@"%@---%@",stu.names,stu.schools);
5.2在.m文件中用synthesize重新制定juner的属性生产的变量名
@synthesize sex = _testSex;
然后在写setJuner的时候就要改变了
- (void)setJuner:(NSString *)juner { _testJuners = juner; }
这样就重新制定了生产的变量名.
6:用kvc的方法
给实列变量赋值
[an setValue:@"230" forKey:@"price"]; [an setValue:@"好听" forKey:@"voice"]; //[an setValue:@"340" forKey:@"speed"]; [an setValue:@(340) forKey:@"speed"];
在上述代码中的第三行speed的变量在.h文件中是没有声明的,这时候就会报错,那怎么解决了
- (void)setValue:(id)value forUndefinedKey:(NSString *)key { NSLog(@"输入的路劲不对,请查看输入的路劲"); }
这就是在获取错误的时候,会抓取异常,不会让程序奔溃了
相关文章推荐
- 第一个ios程序
- iOS开发~内存管理资料整理
- IOS并发编程——Grand Center Dispatch
- text
- IOS开发高效宏整理
- 斯坦福大学公开课:iOS 7应用开发 笔记
- iOS多线程编程之GCD
- SoftwareEngineering.APIDesign.iOS
- IOS的一些小技巧
- IOS沙盒详解
- IOS - 商品视图
- 如何查看iOS应用crash日志
- iOS 9 适配系列教程
- iOS开发 -- xib的使用
- 关于iOS xib加载实践
- iOS蓝牙4.0入门
- ios学习7_iPhone屏幕尺寸、分辨率及适配
- ios学习7_iPhone屏幕尺寸、分辨率及适配
- 【iOS开发系列】版本新特性界面
- iOS 彻底学会使用delegate