为了账号安全,请及时绑定邮箱和手机立即绑定

四、Object-C 属性声明和点语法

标签:
Java

一、属性是什么

属性(property):一个对象的属性或特性,OC中可以简单理解为类中的方法,和变量

属性声明变量

@interface Person : NSObject@property NSString* name;
- (id)showClassName;@end

@property NSString* name;声明在.h接口文件中。凡是用@property关键字属性声明过后。
1、自动生成实例变量。
2、自动生成访问方法。
3、更简单的调用方法,即“.”语法调用即可。
4、属性的内省(instrospection,java中叫反射)。通过内省可以动态查询属性的名称和类型。

@property NSString* name;

这一句话就类似于如下语句。平时大多直接写这样一句话就行了。

@interface Person : NSObject{    NSString * _name;
}
- (void)setName:(NSString *)name;
- (NSString *)name;@end@implementation Person- (void)setName:(NSString *)name{
    _name = name;
}
- (NSString *)name{    return _name;
}@endPerson * p = [[Person alloc] init];
p.name = @"jack";

这样写后也可以使用“.”语法访问。注意语法格式
1、变量一定是“_”下划线在前面。
2、setName驼峰命名,一定要用setName。
3、get关键字不能加,只能写成name。
4、其它类似,只有这样写才能“.”语法访问,固定格式。

二、给属性指定选项

2.1、给属性制定选项的方法

@property(nonatomic,readonly,strong,retain,setter=setValue:) NSString * dadName;

@property可以跟()指定选项
1、显示指定方法名
setter = setValue: //setValue可以取别的名字
getter = value  //value可以取别的名字
2、读写属性
readonly // 只读
readwrite     / /   读写
3、赋值时的选项
assin  // 单纯赋值
retain // 进行保持操作
unsafe_unratained  // 同assin,用于ARC
strong // 同retarin,用于ARC
week // 弱引用,用于ARC
copy // 复制对象
3、原子性操作
nonatomic  // 非原子性操作、非线性安全

2.2、选项的作用

由于OC应用于,手动引用计数、ARC和垃圾回收三种内存管理方式,根据管理方式的不同,关键字的作用也会不同。这里笔者只讲ARC情况下

选项名称基础数据类型对象类型
未指定任何选项直接赋值警告
assign、unsafe_unratained直接赋值直接赋值
retain、strong出错赋值并对新值进行retain
week出错弱引用
copy出错赋值时建立传入值的一份副本

2.3、点语法

OC中点语法的目的就是访问属性。
1、注意id类型,void类型和C中的数组类型不能用点语法。
2、点语法可以连用,比如 person.dog.name = @“jack”;
3、递增和点语法 temp = obj.age++; 相当于如下代码
[boj setAge:[obj age] + 1];
4、复合赋值表达式和点语法  obj.age *= 2;相当于如下代码
[boj setAge:[obj age] * 2];
5、self使用点操作符可以访问类中自己的方法。注意,不要在访问的方法中使用self,否则就会中造成无限循环递归,无法终止。
6、super 使用点操作符用来调用父类中的setter/geter方法。
7、类中没有参数的方法都可以用点操作符和getter一样调用。



作者:Yink_Liu
链接:https://www.jianshu.com/p/8a7d70ff5a69


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
205
获赞与收藏
1007

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消