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

作者: Yink_Liu | 来源:发表于2018-07-07 11:35 被阅读14次

Objective-C学习索引

一、属性是什么

属性(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;
}
@end
Person * 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一样调用。

相关文章

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

    Objective-C学习索引 一、属性是什么 属性(property):一个对象的属性或特性,OC中可以简单理解...

  • Objective-C属性

    Objective-C属性修饰符 Objective-C 2.0引入了新的语法以声明变量为属性,并包含一可选定义以...

  • 采用现代Objective-C (2)

    Properties 一个public或private的Objective-C属性使用@property语法声明的...

  • 2-1 Objective-C语法汇总预览

    课程来自慕课网DavidChin老师 Objective-C语法汇总预览 类的定义 类的属性声明 类的方法声明 类...

  • iOS Property 基础整理

    我们每天都撸着Property,它是Objective-C的关键词;@Property是声明属性的语法,它可以快速...

  • 属性的声明和点语法的使用

    点语法很简单: 就是在调用时,xxx.属性; BOOL 类型的成员变量写法: BOOL 类型的使用:就是为了易读...

  • iOS----属性

    声明属性 Objective-C声明的属性特性提供了一种简单的方法来声明和实现对象的访问器方法。 概述 ...

  • 从C语言的变量声明到Objective-C中的Block语法

    从C语言的变量声明到Objective-C中的Block语法 从C语言的变量声明到Objective-C中的Blo...

  • CSS基础语法

    一、CSS语法: 声明由CSS属性:属性;组成 二、CSS属性 三、CSS三种样式 四、选择器 五、命名规则:英文...

  • Block

    Block基本语法 typedef声明,作Method参数使用 属性声明,使用copy修饰符 基本语法 声明Blo...

网友评论

    本文标题:四、Objective-C 属性声明和点语法

    本文链接:https://www.haomeiwen.com/subject/vpziuftx.html