美文网首页
类和结构体

类和结构体

作者: 算命的李老师 | 来源:发表于2020-03-17 15:11 被阅读0次

类和结构体

==类和结构体关系==

OC中Class点进去看就是一个指向结构体的指针,在64位环境下占8个字节,所以NSObject在内存中就占8个字节,但是真正的的情况是系统分配占16个字节
共同点
  • 定义属性用于储存值
  • 定义方法用于提供功能
  • 定义下标用于通过下标语法访问值
  • 定义初始化器用于生成初始化值
  • 通过扩展以增加默认实现的功能
  • 符合协议以对某类提供标准功能
不同点
  • struct作为数据结构的实现体,它默认的数据访问控制是public的,而class作为对象的实现体,它默认的成员变量访问控制是private的
  • 所有的结构体都有一个自动生成的成员逐一构造器,用于初始化新结构体实例中成员的属性,然而类实例并没有默认的成员逐一构造器:
  • 取消初始化器允许一个类实例释放任何其所被分配的资源
OC中的不同点
  • 对象中的结构体属性中的属性是不允许作单独修改的,比如UIView的frame.size不可以直接被修改为CGSizeMake。但是当不用@property定义结构体,而是用public,通过->方式访问,就可以修改。
  • 结构体只能封装数据 类可以封装行为
  • 结构体和枚举是值类型(栈分配内存小,读取快) ,引用计数允许对一个类的多次引用,结构体总是通过被复制的方式在代码中传递
  • 类型转换允许在运行时检查和解释一个类实例的类型
Swift中的不同点
  • swift中结构体不能继承,c++里面结构体是可以继承的
  • 类型转换允许在运行时检查和解释一个类实例的类型
  • 初始化器使一个类的实例能够释放它所分配的任何资源。
  • 结构体和枚举是值类型(栈分配内存小,读取快) ,引用计数允许对一个类的多次引用,结构体总是通过被复制的方式在代码中传递
什么时候用类,什么时候用结构体:

1:如果封装的这个数据,不仅有数据还有方法,只能使用类。
2:如果表示实体,没有行为,光有属性,结构体更方便。

结构体为什么在栈里:

结构体是值类型,是通过被复制的方式在代码中传递,如果在堆中,结构体数据量很大,拷贝的代价很大。栈的特点是空间小,读取快。

相关文章

  • 类和结构体

    类与结构体 本节内容包括: 类和结构体对比 结构体和枚举是值类型 类是引用类型 类和结构体的选择 集合类型的赋值与...

  • Swift Tour Learn (六) -- Swift 语法

    Swift语法基础(五)-- (类和结构体、属性、方法) 本章将会介绍 类和结构体对比结构体和枚举是值类型类是引用...

  • swift基础_结构体和类

    一.结构体和类 结构体张这个样子 类张这个样子 二.结构体和类的区别 针对结构体, 即使你没有定义函数,编译器也会...

  • Day9 类和结构体

    本页包含内容:• 类和结构体对比• 结构体和枚举是值类型• 类是引用类型• 类和结构体的选择• 字符串、数组、和字...

  • Swift学习_基本语法之枚举&类&结构体

    1.枚举 类和结构体 在swift中类和结构体类似,可以把结构体理解成是一种轻量级的类,在swift中结构体不仅可...

  • swift面向对象特性——类和结构体

    类和结构体的定义 类的语法格式为: 结构体的语法格式为: Swift中类和结构体的名称都以大写字母开头。类的方法和...

  • SwiftUI-结构体与类

    一.结构体与类 结构体和类都可以使用属性和方法构建复杂数据类型,但是什么时候使用结构体,什么时候使用类呢?结构体和...

  • Swift5.1类和结构体

    9.类和结构体 结构体和类相比Swift中结构体和类的共同点:- 定义属性⽤于存储值- 定义方法⽤于提供功能- 定...

  • Swift笔记<十五>结构体和类的区别

    结构体和类的区别 结构体有逐一构造器,类没有 结构体是值类型,类是引用类型 结构体不是继承(意味着没有多态)

  • swift学习三(类与结构体)

    一、类和结构体对比 二、结构体和枚举是值类型 三、类是引用类型 四、类和结构体的选择 五、字符串、数组、和字典类型...

网友评论

      本文标题:类和结构体

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