您的位置:首页 > 移动开发 > Objective-C

Objective-C语法学习归纳

2016-07-05 22:07 351 查看

self关键字

类似java中的this,防止局部变量将成员变量覆盖、冲突
//使用方法
-(void) setAge:(int)age
{
self->age = age;
}

-(int)age
{
return self->age;
}


self 调用方法:  [self 方法名];
self调用方法时要注意避免调用自己,否则造成死循环。

点语法

除了get和set的调用,oc中提供了另一种可以实现get、set的调用语法,称为点语法。它的本质就是get、set。当使用点语法获取值当时候,系统调用相关的get方法,

//Student.h
#import <Foundation/Foundation.h>

@interface Students : NSObject
{
@private
int _age;

}

-(int) age;
- (void) setAge:(int)age;
@end

//Student.m
#import "Students.h"

@implementation Students

-(void) setAge:(int)age
{
self->_age = age;
}

-(int) age
{
NSLog(@"age = %d",_age);
return self->_age;
}

@end

//main

#import <Foundation/Foundation.h>
#import "Students.h"

int main(int argc, const char * argv[]) {
@autoreleasepool {
Students *stu = [[Students alloc]init];
stu.age=18;   <span style="font-family: Arial, Helvetica, sans-serif;">//等同于 [stu setAge:18];</span>
int age =stu.age; <span style="font-family: Arial, Helvetica, sans-serif;">//等同于 int age = [stu age];</span>
}    return 0;
}


若在set、get中使用点语法,会造成循环引用。

属性

oc定义成员变量时,先对其进行封装,之后提供ge、set提供外界访问操作,但其过于繁琐,增大工作量,为此,oc提供了属性,可以替代set、get方法。
属性对声明: 以关键字@property开头,它可以出现在一个类的@interface代码部分的方法声明列表中的任何位置。
语法格式: @property(特性1,特性2……) 变量类型 变量名;
括号中的特性是可选的, 它是对属性行为的描述。
示例: @property int age; 
等同于:
{
@private int _age;

}

-(int) age;
- (void) setAge:(int)age;


description 方法

类似于java中的toString。若要用NSLog打印对象,需要重写description方法。 否则只会答应出对象的内存地址。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息