iOS中使用点语法

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

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


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-36-Object-C语法之属性关键字的使用(assign/weak/strong/copy)

一、 assign 用于 ‘基本数据类型’、‘枚举’、‘结构体’ 等非OC对象类型 eg:int、bool等 二、 weak 一般应用: UI控件 详细说明: 为什么建...
  • IOT_LI
  • IOT_LI
  • 2015-12-02 16:07
  • 1379

iOS Block的基本语法与使用

iOS中block比较常用,但是又和OC的语法显得有点格格不入,难于理解。 以下是我个人初步的理解,供查阅。 1.block的声明 //声明一个block typedef NSStr...

iOS 语法之Blocks使用初级剑童篇(欢迎提建议和分享遇到的问题)

首先说一下 blocks的优点吧,仅个人感觉 若有不对或者其他理解请支持,欢迎交流 使用Block的好处有: Block可以用在许多不同的环境中,这样可以让代码更加简单,以及减少函数声明的数...

块语法block 在iOS4中使用代码块-基础知识(翻译)

翻译自 http://pragmaticstudio.com/blog/2010/7/28/ios4-blocks-1     iOS4引入了一个新特性,支持代码块的使用,这将从根本上改变你...

正则表达式简单语法规则和IOS的使用

正则表达式基本语法 1.正则表达式基本语法 两个特殊的符号'^'和'$'。他们的作用是分别指出一个字符串的开始和结束。例子如下: "^The":表示所有以"The"开始的字符串("T...

iOS高效编码之一----使用文字语法

在iOS开发过程中,NSString, NSArray, NSDictionary,NSNumber这几个类用的实在是非常多,以前的时候,都是用系统自带的方法使用这些类,后来发现有人习惯使用文字语法,...

块语法block 在iOS4中使用代码块-基础知识(翻译)

翻译自 http://pragmaticstudio.com/blog/2010/7/28/ios4-blocks-1     iOS4引入了一个新特性,支持代码块的使用,这将从根本上改变你...

Cycript基本语法与使用-iOS逆向工程

Cycript基本语法与使用-iOS逆向工程

IOS学习 Block语法的使用:声明、创建、引用局部变量,使用block从后往前传值

#import "HomeViewController.h" typedef int(^Blokc)(int) ;  //Block是类型 @interface HomeViewCo...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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