酷代码 AI
菜单
IOS-大厂面试题库,由浅入深
  • 在ios开发中,属性关键字 readwrite,readonly,assign,retain,copy,nonatomic 各是什么作用,在那种情况下用?(442点数解答 | 2023-11-08 00:36:58)

    在iOS开发中,这些关键字用于声明属性的访问修饰符。以下是它们的作用和使用场景: 1. `readwrite`:这个关键字表示属性可以被读取和写入。这是默认的访问级别,如果属性没有显式地指定读写权限,则默认为`readwrite`。 2. `readonly`:这个关键字表示属性只能被读取,不能被写入。如果你有一个只读的属性,你可以使用`readonly`关键字来限制对它的修改。 3. `assign`:这个关键字表示属性的值被直接赋值,不需要进行引用计数。这意味着,当一个对象的值被另一个对象赋值时,两个对象将指向同一个对象的内存地址。如果属性的类型是基本数据类型(如`int`,`flo

    182 0
  • 在ios开发中,@property中有哪些属性关键字?/ @property 后面可以有哪些修饰符?(362点数解答 | 2023-11-08 00:36:49)

    在iOS开发中,@property中可以使用的属性关键字有: 1. nonatomic:默认属性,表示属性不是原子性的,即在多线程环境下,对属性的修改不会被原子性地完成。 2. atomic:原子属性,表示属性是原子性的,即在多线程环境下,对属性的修改会被原子性地完成。 3. strong:强引用属性,表示属性是强引用的,即属性会持有其所指向的对象,直到属性被设置为nil。 4. weak:弱引用属性,表示属性是弱引用的,即属性不会持有其所指向的对象,当对象被销毁时,属性也会自动变为nil。 5. copy:复制属性,表示属性是复制的,即属性会持有对所指向对象的复制,当对象被销毁时,属性也会

    136 0
  • 在ios开发中,@property 的本质是什么?ivar、getter、setter 是如何生成并添加到这个类中的(433点数解答 | 2023-11-08 00:36:42)

    在iOS开发中,`@property`是Objective-C语言中用来定义实例变量和访问方法的关键字。当我们使用`@property`来定义一个实例变量时,编译器会自动为我们生成getter和setter方法,这些方法用来获取和设置这个实例变量的值。 `@property`的定义包含了以下信息: - `nonatomic`:是否使用原子性来设置和获取实例变量的值。如果省略,那么默认使用原子性。 - `strong`:实例变量的引用类型。如果省略,那么默认为弱引用类型。 - `readwrite`:是否允许读取和写入实例变量的值。如果省略,那么默认为可读可写。 - `getter`:获取实

    228 0
  • 在ios开发中,objective-c的类可以多重继承么?可以实现多个接口么?category是什么?重写一个类的方式用继承好还是分类好?为什么?(281点数解答 | 2023-11-08 00:36:32)

    Objective-C是一种动态类型的面向对象编程语言,它支持类的继承。在Objective-C中,一个类可以继承自一个父类,并且可以实现多个协议。这是通过在类的声明中使用冒号和协议的名字来实现的。 例如: ```objective-c @interface MyClass : NSObject <MyProtocol1, MyProtocol2> @end ``` 在这个例子中,MyClass继承自NSObject,并且实现了MyProtocol1和MyProtocol2。 Category是在Objective-C中用来扩展类功能的一种机制。通过category,我们可以向一个已经存在

    201 0
  • 在ios开发中,frame 和 bounds 有什么不同?(179点数解答 | 2023-11-08 00:36:27)

    在iOS开发中,frame和bounds是两个用于描述视图位置和大小的属性。 frame是一个视图的位置和大小的集合,包括视图的x和y坐标,宽度和高度。frame可以被改变,以移动视图或更改视图的大小。frame的改变会立即反映在视图上。 bounds是一个视图的可见区域的大小,包括视图的x和y坐标,宽度和高度。bounds不能被改变,但可以被设置为视图的frame的子集。bounds的改变不会立即反映在视图上,而是会在视图的下一次布局中生效。 简而言之,frame是视图的位置和大小,而bounds是视图可见区域的大小。frame可以被改变,而bounds不能被改变,但可以被设置为视图的

    126 0
  • 在ios开发中,#import跟 #include 有什么区别,@class呢,#import<> 跟 #import””有什么区别?(381点数解答 | 2023-11-08 00:36:23)

    `#import` 和 `#include` 都是用于在 C 语言和 Objective-C 语言中引入其他文件的预处理器指令。它们的主要区别在于引入的方式和引入的文件类型。 `#import` 是用于引入头文件的指令。头文件通常是 Objective-C 类、协议或枚举的定义。使用 `#import` 指令可以将一个文件的内容引入到当前文件中,使得当前文件可以使用该文件中定义的类、协议或枚举。`#import` 指令可以使用绝对路径或相对路径,也可以使用宏名来引入文件。 `#include` 是用于引入 C 语言源文件的指令。源文件是包含 C 语言函数或变量定义的文件。使用 `#incl

    202 0
  • 在ios开发中,mvc 和 mvvm 的区别(285点数解答 | 2023-11-08 00:36:15)

    MVC(Model-View-Controller)和MVVM(Model-View-ViewModel)都是iOS开发中常用的软件设计模式,它们的主要区别在于它们的架构和交互方式。 MVC是一种经典的软件设计模式,它将应用程序分解为三个主要组件:模型、视图和控制器。模型负责处理业务逻辑和数据,视图负责展示数据,控制器负责处理用户的输入和控制应用程序的流程。MVC的优点是它清晰地分离了应用程序的不同组件,使得开发和维护变得更加容易。MVC的缺点是它可能导致数据和行为的分离,这使得在某些情况下难以实现一些功能。 MVVM是一种相对较新的软件设计模式,它在MVC的基础上引入了视图模型的概念。视

    185 0
  • 在ios开发中,设计模式是什么? 你知道哪些设计模式,并简要叙述?(358点数解答 | 2023-11-08 00:36:10)

    设计模式是描述在特定情况下,解决问题的最佳实践的解决方案。它们是在长期的软件开发实践中,经过验证并被广泛应用的。设计模式可以帮助开发者解决常见的软件设计问题,提高代码的可读性和可维护性,提高团队协作效率。 以下是一些常见的设计模式: 1. 单例模式:确保一个类只有一个实例,并提供一个全局访问点。 2. 工厂模式:提供一个创建对象的接口,但让子类决定要实例化的类。 3. 观察者模式:定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 4. 适配器模式:将一个类的接口转换成客户希望的另一个接口。适配器模式使得原本由于接口不兼容而不能一起

    106 0
  • 在ios开发中,解决tableview滑动卡顿问题(406点数解答 | 2023-11-08 00:36:03)

    在iOS开发中,如果Tableview滑动卡顿,可能是因为以下几个原因: 1. 数据量过大:如果你的tableview中包含了大量的数据,那么在滑动时可能会导致卡顿。解决这个问题的方法是使用只读取可视区域数据的方式,例如使用NSFetchedResultsController或者实现UITableViewDataSource的dataSourcePrefetching方法。 2. 多次重绘:如果在tableview的cell中进行了大量的计算或者绘制操作,那么可能会导致tableview的滑动卡顿。解决这个问题的方法是在cell中使用批处理的方式进行计算或者绘制,或者使用TableView

    124 0
  • 在ios开发中,详细描述一下你对ipv4与ipv6的理解。(300点数解答 | 2023-11-08 00:35:54)

    IPv4和IPv6是两种不同的Internet协议版本,它们都用于标识网络上的设备。 IPv4是Internet Protocol version 4的缩写,是目前最常用的IP协议版本。IPv4使用32位的地址,这意味着它可以支持大约42亿个不同的地址。随着互联网的快速发展,IPv4地址已经接近耗尽。IPv4地址的分配是按照地区和网络类型进行的,这意味着一些地区的地址已经分配完毕,而新的设备无法获得新的IPv4地址。 IPv6是Internet Protocol version 6的缩写,是IPv4的替代版本。IPv6使用128位的地址,这意味着它可以支持约340万亿亿亿亿个不同的地址。这

    103 0