美文网首页
Object C 属性、特性、类型

Object C 属性、特性、类型

作者: Yison_a169 | 来源:发表于2021-07-27 17:26 被阅读0次

    图片总结:




    属性

    @property声明属性,做了三件事

    .h: 声明了getter和setter方法;

    .h: 声明了实例变量(默认:下划线+属性名);

    .m: 实现了getter和setter方法。


    特性

    1.Atomicity(原子性):

    是否给setter和getter加锁,是否保证setter或者getter的每次访问是完整性的

    atomic(默认值)

    一定程度上可以保证线程安全,有线程在访问setter,其他线程只能等待完成后才能访问。

    nonatomic

    不保证你获得的是有效值

    2.Access(存取特性):

    readwrite,就是告诉编译器,同时生成getter和setter。如果是readonly,只生成getter。

    readwrite:「读写」
    readonly: 「只读」

    3.特质修饰(内存管理特性)(管理对象的生命周期的)

    strong(默认值)

    表明你需要引用(持有)这个对象,负责保持这个对象的生命周期。

    基本数据类型(非对象类型,如int, float, BOOL),默认值并不是strong,strong只能用于对象类型。

    weak

    跟strong相反,属性所指的对象销毁时,属性值也会清空,设置为nil。

    会给你一个引用,指向对象。但是不会主张所有权。也不会增加retain count。

    在delegate patterns中常用weak解决strong reference cycles(以前叫retain cycles)问题。

    copy

    会在赋值前,复制一个对象,指向新对象

    NSString,NSArray,NSDictonary,推荐使用copy属性

    NSMubtableString,NSMutableArray, NSMutableDictonary属性则使用strong属性。

    assign

    针对基本数据类型赋值操作。

    4.Nullability

    nullable:对象「可为空」

    nonnull:对象「不可为空」

    null_unspecified:「未指定」

    null_resettable:调用setter去reset属性时,可以传入nil,但是getter返回值,不为空。


    数据类型

    基本数据类型:整型, 字符型, 浮点型 (float 和 double), 枚举型;

    1.整型

    ① 四种整型 :

    short int : 短整型, 占16位, mac 上占 2 字节, ios 上占 2 字节, 范围 -32768(-2^15) ~ 32767(2^15 - 1), 3万;

    int : 整型, 占32位, mac 上占 4 字节, ios 上占 4 字节, 范围 -2147483648(-2^31) ~ 2147483647(2^31 - 1), 21亿;

    long int : 长整型, 占64位, mac 上占 8 字节, ios 上占 4 字节, (-2^63) ~ (2^63 - 1), 922亿亿;

    long long : 占64位, mac 上占 8 字节, ios 上占 8 字节;

    ② 进制

    八进制 十六进制赋值 : 八进制由 "0" 开头, 十六进制由 "0x" 或者 "0X" 开头;

    ③ 无符号整型:
    无符号整型 第一位 不是符号位, 范围比原来要大,例 unsigned short int 范围是 0到6万

    -- %d : 十进制整数, 正数无符号, 负数有 "-" 符号;

    -- %o : 八进制无符号整数, 没有 0 前缀;

    -- %x : 十六进制无符号整数, 没有 0x 前缀;

    -- %u : 十进制无符号整数;

    2. 字符型

    单个字符表示 : 使用 '' 将单个字符引起来, 便是字符常量, 如 'a', 'b' 等;

    转义字符表示 : 使用转义符号 \ 来指定字符, 如 '\n' 等;

    字符占用空间大小 : 每个字符占用一个字节, 因此 Object-C 不支持中文字符, 因为中文字符都是占 2 ~ 3 个字节;

    -- %c : 单个字符输出;

    -- %s : 输出字符串;

    3. 浮点型

    float : 占 4 字节;

    double : 占 8 字节;

    long double : 占 16 字节;

    CGFloat :对于需要兼容64位机器的程序而言,需要用CGFloat,当然从长远角度考虑还是推荐尽量使用CGFloat。尽管在32位上相比float增加了一些memory footprint的消耗

    (Object-C浮点数 : 不区分 double 与 float, 一个浮点数 3.8 可以赋值给两种类型的变量)

    -- %f : 以小数形式输出浮点数, 默认 6 位小数;

    -- %e : 以指数形式输出浮点数, 默认 6 位小数;

    -- %g : 自动选择 %e 或者 %f 各式;

    4.枚举类型

    ① 定义普通枚举:

    定义方式 : 格式 enum enum_name {elem1, elem2, elem3 ...};

    示例 : enum day{Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday};

    定义枚举变量 : 格式 enum enum_name var1, var2;

    示例 : enum day today, tomorrow, 注意 today tomorrow 两个变量的取值只能是 day 枚举中定义的值;

    枚举变量赋值 : 格式 variable = elm1 ;

    示例 : today = Sunday; tomorrow = Friday;

    ② 定义匿名枚举:

    匿名枚举格式 : enum {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday} today, tomorrow ;

    说明 : 两个枚举变量 today 和 tomorrow 只能取值 enum 中得枚举值;

    ③ 枚举值简介

    枚举值常量 : 在 {} 中得是枚举常量 或者 枚举元素, 该元素不是变量, 不能对齐进行赋值, 枚举的值按照定义的顺序 0, 1, 2, 3 以此类推;

    枚举值本质 : 枚举值属于无符号整数, 可以使用 %u 占位符打印出来, 其值也能进行大小比较, 和四则运算;

    枚举初值 : 枚举值可以在定义的时候赋予一个初值;

    -- %p : 输出十六进制形式的指针地址;

    -- %@ : 输出 Object-C 对象;


    其他

    1.布尔型数据

    BOOL 类型值 : 该类型至右两个值 YES 和 NO ;

    BOOL 类型本质 : 该类型本质是 signed char, YES 是 1, NO 是 0, 在处理的时候 YES 会被当成真处理, NO 会被当成假处理;

    2.nil和Nil

    nil相当于Java中的null,表示一个对象,这个对象的指针指向空。Nil是定义一个指向空的类而不是对象。

    3.id类型

    可以存放任何数据类型的对象,类似Java中的Object类,其被定义为指向对象的指针(本身就是指针了),故定义比如id instance = nil;

    id类型是多态和动态绑定的基础。

    Object C 数字、字符串、集合、字典、NSURL、NSDate

    下一章:Object C 数字、字符串、集合、字典、NSURL、NSDate - 简书 (jianshu.com)

    相关文章

      网友评论

          本文标题:Object C 属性、特性、类型

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