第三讲:属性,点语法

第三讲:属性,点语法
* setter,getter
* 属性
* 属性的特性
* 点语法
* 综合练习(分数)
一 setter,getter
* setter: 在OC中为单一变量赋值的方法称为setter方法(设置器).
* getter: 在OC中,读取实例变量值的方法称为getter方法(访问器).
OC里规定了setter,getter书写格式:
举例:
setter方法: 
-(void)setAge:(NSInteger)age;
* 注意: set + 实例变量名(首字母大写),忽略下划线.
getter方法:
-(NSInteger)age;
* 注意: 返回值类型与实例变量类型一致.方法与实例变量名相同,忽略下划线.

二 属性
* Objective-C 2.0定义对的语法,提供setter,getter方法的默认实现.在一定程度上简化程序代码,并且提高程序的安全性
* 属性的定义:
1. 属性的声明: 在.h文件中使用@property声明属性.
2. 以实例变量_name为例:
* 属性的声明:
@property NSString *那么;
相当于在@interface中声明了两个方法
* setter方法:
-(void)setName:(NSString *)name;
* getter方法:
-(NSString *)name;
* 属性的实现:
1. 在.m文件使用@synthesize实现属性
2. 以实例变量_name为例:
@synthesize name = _name;
实现声明属性: @synthesize name
指定生成的setter和getter方法内部操作的实例变量
相当于在@implementation中实现了
1. setter方法
-(void)setName:(NSString *)name;
{
     _name = name;
}
2. getter方法:
-(NSString *)name;
{
     return _name;
}
3. @synthesize在类的实现部分
在Xcode4.5以后的版本中.@synthesize可以程略,只使用@property声明属性即可.
在默认情况下,当没有实现setter和getter方法时,通过@synthesize可以自动生成标准的setter和getter方法.
* 属性和实例变量;
      属性的作用是生成setter和getter方法的实现. 如果方法内部造作的实力变量未定义,系统会自动生成一个_属性名的实例变量,但是生成的实例变量是可见度私有的,子类不可访问
      一旦同时重写了setter和getter方法,并且没有实现@synthesize, @synthesize就不再生成实例
* 属性的特性:
       Objective-C提供属性的目的是为了简化代码.为属性提供了一些关键字用以控setter,getter的实现细节,这些关键字我们称为属性的特性(attribute).
1. 读写性控制:(readonly,readwrite,setter=,getter=)
2. readonly: 只读状态,是告诉编译器,属性只生成getter方法,不生成setter方法
3. readwrite; 读写状态,是告诉编译器,属性只生成setter方法又生成getter方法,既有设置器也有访问器,默认的读写特性
4. setter=: 指定属性生成的setter方法的名字
5. getter=: 指定属性生成的getter方法的名字
* 属性的特性—原子性
1. 原子性控制:nonatomic  atomic
2. atomic: 原子特性,setter,getter方法在多线程访问下是绝对安全的,即setter,getter内部做了多线程访问处理.默认的原子特性
3. monatomic: 非原子特性.setter,getter方法内部不会做多线程访问处理,仅仅是普通的setter,getter方法.
4. 使用: 声明属性时,通常使用nonatomic,某些属性需要线程安全的时候,才会定义为atomic
       例如:
       @property (nonatomic) NSString *name;
* 属性的特性—语义特性
1. 如果属性是非对象类型(int , float) 属性的语义设置使用assign.
2. 如果属性是对象类型( NSString )属性的语义设置使用retain.
3. 如果属性是对象类型并且想得到对象的副本,使用copy,
* 点语法:
1. 只要符合系统默认setter,getter书写格式的方法都可以使用点语法.
例如:
实例变量:_name
setter方法:
[person setName:@“Lily”];
点语法:
person.name = @“Lily”;
getter方法:
NSString *string = [person name];
点语法:
NSString *string = person.name;
属性是一对getter,setter方法,点语法是属性的另一种调用格式
内容: 这个合成医疗保健数据集的创建是为了作为数据科学、机器学习和数据分析爱好者的宝贵资源。 灵感: 医疗保健数据通常很敏感,并受隐私法规的约束,因此难以访问以进行学习和实验。为了解决这一差距,我利用 Python 的 Faker 库生成了一个数据集,该数据集反映了医疗保健记录中常见的结构和属性。通过提供这些合成数据,我希望促进医疗保健分析领域的创新、学习和知识共享。 表格信息: 每列都提供有关患者、其入院情况和提供的医疗保健服务的特定信息,使此数据集适用于医疗保健领域的各种数据分析和建模任务。以下是数据集中每一列的简要说明 - 名字:此列表示与医疗保健记录关联的患者的姓名。 年龄:患者入院时的年龄,以年表示。 性:指示患者的性别,“男性”或“女性”。 血型:患者的血型,可以是常见的血型之一(例如,“A+”、“O-”等)。 医疗状况:此列指定了与患者相关的主要医疗状况或诊断,例如“糖尿病”、“高血压”、“哮喘”等。 入学日期:患者入住医疗机构的日期。 医生:在患者入院期间负责护理的医生的姓名。 医院:标识患者收治的医疗机构或医院。 保险提供商:此列指示患者的保险提供商,可以是多个选项之一,包括“Aetna”、“Blue Cross”、“Cigna”、“UnitedHealthcare”和“Medicare”。 账单金额:患者在入院期间为他们的医疗保健服务开具的账单金额。这表示为浮数。 房间号:患者入院期间入住的房间号。 入场类型:指定入院类型,可以是“紧急”、“选择性”或“紧急”,以反映入院的情况。 出院日期:患者从医疗机构出院的日期,基于入院日期和实际范围内的随机天数。 药物:确定患者在入院期间开具或服用的药物。例子包括“阿司匹林”、“布洛芬”、“青霉素”、“扑热息痛”和“立普妥”。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值