iOS中使用点语法

原创 2015年07月06日 21:23:27

本文来源地址:http://www.osjoin.com 


在实际的开发过程中,用点语法,绝对是加快开发过程的一个好帮手,废话不多说,开始上代码


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(@"输入的路劲不对,请查看输入的路劲");
}

这就是在获取错误的时候,会抓取异常,不会让程序奔溃了


  • 如有问题可添加QQ群:234812704(洲洲哥之说)
  • 登录www.osjoin.com 第一时间查看最新文章
  • 欢迎各位一块学习,提高逼格!
  • 也可以添加洲洲哥的微信公众号

    更多消息

    更多信iOS开发信息 请以关注洲洲哥 的微信公众号,不定期有干货推送:

    这里写图片描述







版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS开发中,关于什么时候使用点语法的解答

这个问题比较简单,我想很多朋友都知道的一清二楚,当然也会有很多朋友知道一点点(以初学者为主)。当初学iOS的时候全篇点语法,后来看到说点语法要经过方法派发,比较慢,直接访问实例变量比较快,于是又全篇直...
  • u013046795
  • u013046795
  • 2015年07月19日 18:46
  • 633

IOS 的属性剖析(点语法操作)

在C++中,没有属性的概念,只有setter,getter的方式来对类成员变量进行操作。 如: class gloox { public:        gloox(){};       ...
  • fengsh998
  • fengsh998
  • 2013年01月27日 18:04
  • 5056

ios之点语法

第一个object c 程序     首先新建一个项目,“create a new Xcode project"-"OS X下的Application"-"Command Line Tool" ,命名...
  • chaoyuan899
  • chaoyuan899
  • 2013年08月25日 09:19
  • 7706

OC点语法和箭头的区别

OC点语法和箭头的区别
  • Ashimar_a
  • Ashimar_a
  • 2016年06月06日 13:43
  • 442

[Objective-C]-02-set get语法.类方法.self关键字与点语法

一. set和get方法的使用 因为如果成员变量被定义为@public,那么就可以被任意赋值,而没有声明@public,又要管理成员的访问,就要使用set方法和get方法. 1.set方法...
  • l_511
  • l_511
  • 2015年07月16日 21:22
  • 1086

IOS开发基础Object-C(03)—点语法

今天我们来介绍一下OC中的点语法,官方为了让更多的程序员更加容易的学习开发OC语言,所以增加了一个点语法。在上一篇博客中,我们详细介绍了在OC中类的创建。今天我们就来简单的复习一下:一、创建一个学生类...
  • u010037928
  • u010037928
  • 2015年10月31日 17:27
  • 2183

IOS中点语法的变态用法(我叫做不法用法)

好奇怪的点语法!你是不是也很迷茫! 今天突然发现了点语法的一个别开生面的用法。之前从未耳闻,观之甚是怪异。很是迷茫。更诧异的是编译、运行屡试不爽。于是,便细细咀嚼一番。愚见录之以备日后之用。...
  • Mayerlucky
  • Mayerlucky
  • 2015年02月03日 23:53
  • 909

OC_04_属性_点语法_MKC

属性 属性是Objective-C 2.0定义的语法,为实例变量提供了setter、getter⽅方法的默认实现 能在一定程度上简化程序代码,并且增强实例变量的访问安全性。 属性的定义 ...
  • super6kingl
  • super6kingl
  • 2015年05月11日 19:02
  • 705

iOS NSIndexPath

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
  • ICHENKE
  • ICHENKE
  • 2016年05月03日 16:14
  • 241

【Objective-C】点语法

一、 1、 在java中,我们可以通过“对象名.成员变量名”来访问对象的公共成员变量,这个就是点语法。public class Student { public int age; }...
  • haojie2014
  • haojie2014
  • 2015年07月15日 21:20
  • 687
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS中使用点语法
举报原因:
原因补充:

(最多只允许输入30个字)