oc学习点语法

一,问题。

为什么需要点语法,点语法好处是什么

@property @synthesize如何使用

@property @synthesize编译器如何展开

如何使用点语法

@property其他属性

二,问题回答

1为什么需要点语法,

为了方便别的程序员转到oc开发上来

为了程序设计简单化

隐藏了内存管理细节

隐藏了多线程,同步,加锁细节

2点语法好处是什么

属性可以在不使用括号的情况下使用点语法

无需调用[fool value] 可以使用foo.value 来访问,虽然foo.value看起来像是直接访问value变量,但是属性始终调用方法,而这些方法又可以访问对象的数据

3,setter和getter函数

set方法和get方法的使用场合

@public的成员可以被随意赋值,应该使用set方法和get方法来管理成员的访问(类似机场的安检、水龙头过滤,过滤掉不合理的东西),比如僵尸的生命值不能为负数set方法作用:用来设置成员变量,可以在方法里面过滤掉一些不合理的值命名规范:方法都是以set开头,而且后面跟上成员变量名,成员变量名的首字母必须大写形参名称不要跟成员变量同名.get方法作用:返回对象内部的成员变量命名规范:get方法的名称一般就跟成员变量同名成员变量的命名规范成员变量都以下划线 _ 开头可以跟get方法的名称区分开可以跟其他局部变量区分开,一看到下划线开头的变量,肯定是成员变量

4点语法是编译器级别

dog.age = 200;

dogAge = [dog. age];

编译器会把dog.age = 200;展开成[dog setAge:200];

huiba dogAge = dog.age;展开成[dog setAge:200];

会把dogAge = dog. age;展开成dogAge = [dog age]函数调用。

5,点语法setter 和getter规范

setter函数展看规范

dog.age = 200;

[dog setAge:200];

getter函数展开规范

int dogAge = dog.age;

int dogAge = [dog age];

int dogAge = [dog age];

6,@property

@propety是让编译器自动产生函数申明

不用写下面2行代码

-(void)setAge:(int)newAge;

-(int)age;

只需下列一行就可以代替

@property int age;

7@synthesize

@synthesize就是编译器自动实现getter和setter函数

不用写下列代码

-(void)setAge:(int)newAge{

age = newAge;

}

-(int)age{

return age;

}

只需要写

@synthesize age;

8,属性可以是

readwrite(缺省),readonly

1表示属性是可读写的也就是可以使用getter和setter,而readonly只能使用getter ;

2assign(缺省),retain,copy;

表示属性如何存储

3,nonatomic

表示不用考虑线程安全问题

4getter =…,setter=….

从新设置getter函数和setter函数名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值