当前位置: 首页 > news >正文

IOS面试题object-c 61-70

61. 阐述isKindOfClass、isMemberOfClass、selector作用分别是什么?
isKindOfClass:作用是某个对象属于某个类型或者继承自某类型
isMemberOfClass:某个对象确切属于某个类型
selector:通过方法名获取在内存中的函数入口地址
🚀🚀🚀🚀🚀🚀
62. _objc_msgForward 函数是做什么的,直接调用它将会发生什么?
_objc_msgForward是 IMP 类型,用于消息转发的:当向一个对象发送一条消息,但它并没有实现的时候,_objc_msgForward会尝试做消息转发
🚀🚀🚀🚀🚀🚀
63. OC中创建线程的方法是什么?如果在主线程中执行代码,方法是什么?
// 创建线程的方法
- [NSThread detachNewThreadSelector:nil toTarget:nil withObject:nil]
- [self performSelectorInBackground:nil withObject:nil];
- [[NSThread alloc] initWithTarget:nil selector:nil object:nil];
- dispatch_async(dispatch_get_global_queue(0, 0), ^{});
- [[NSOperationQueue new] addOperation:nil];
// 主线程中执行代码的方法
- [self performSelectorOnMainThread:nil withObject:nil waitUntilDone:YES];
- dispatch_async(dispatch_get_main_queue(), ^{});
- [[NSOperationQueue mainQueue] addOperation:nil];
🚀🚀🚀🚀🚀🚀
64. Object-C 中的协议和java中的接口概念有何不同?
OC中的代理有2层含义,官方定义为 formalinformal protocol。前者和Java接口一样。
informal protocol中的方法属于设计模式考虑范畴,不是必须实现的,但是如果有实现,就会改变类的属性。
其实关于正式协议,类别和非正式协议我很早前学习的时候大致看过,也写在了学习教程里“非正式协议概念其实就是类别的另一种表达方式“这里有一些你可能希望实现的方法,你可以使用他们更好的完成工作”。
这个意思是,这些是可选的。比如我门要一个更好的方法,我们就会申明一个这样的类别去实现。然后你在后期可以直接使用这些更好的方法。
这么看,总觉得类别这玩意儿有点像协议的可选协议。”现在来看,其实protocal已经开始对两者都统一和规范起来操作,因为资料中说“非正式协议使用interface修饰“,
现在我们看到协议中两个修饰词:“必须实现(@requied)”和“可选实现(@optional)”。
🚀🚀🚀🚀🚀🚀
65. 阐述 NSOperation Queue?

1.概述:
NSOperationQueue类管理NSOperation对象的执行。

NSOperationQueue可以被称为操作队列,NSOperation可以被称为操作。

操作被添加到操作队列之后,操作队列会根据操作对象的优先级或者相互之间的依赖关系来执行操作。

一个应用程序可以创建多个操作队列,每个操作队列分别管理若干操作。

2.什么时候操作会被移除:
当操作被添加到队列中以后,我们不能从操作队列中直接移除操作对象。

当一个操作对象的任务完成之后才会被自动移除。

任务完成的含义:操作的start方法被调用,并且isFinished方法返回YES。

3.如何取消任务执行:
调用操作对象cancel方法并不能使操作马上停止执行。

当NSOperation的cancel方法被调用后,如果操作不在队列中,这个方法会将操作的isFinished设为YES,如果在操作队列中,这个方法会将操作对象的isCancelled状态设为YES,并且isReady设为YES,让队列调用它的start方法。

在start或者main方法实现中,我们应该检查isCancelled和isFinished属性,如果任意一个为YES,就不执行操作,直接返回,如果是并发操作,让isFinished方法返回YES,如果是非并发操作,设置isFinished值为YES。

4.操作队列的相关API:
(1)创建队列:
可以调用[[NSOperationQueue alloc] init]方法新建一个操作队列,或者调用类方法currentQueue、mainQueue方法获取现存的操作队列。currentQueue一般在NSOperation对象子类中调用,用来返回启动当前操作的队列,如果NSOperation在非运行状态或者在NSOperation外部调用此方法,一般会返回nil。mainQueue方法返回和主线程绑定的操作队列。
(2)增加操作:
addOperation: 增加一个操作对象。
addOperations:waitUntilFinished: 增加一个操作对象数组,可以阻塞当前线程等待所有操作完成。
addOperationWithBlock: 以block的方式添加操作,blcok必须为无参数无返回数据。
(3)最大并发数:
maxConcurrentOperationCount :最大并发数属性,默认为-1,表示并发数无限制,由系统根据环境条件动态决定。
setMaxConcurrentOperationCount:设置最大并发数。
(4)其它:
operations :获取添加到队列中的所有操作对象。
operationCount :获取添加到队列中的操作对象的数量。
setSuspended: 设置队列是否暂停安排操作执行。
isSuspended :获取队列是否处在暂停安排操作执行的状态。
cancelAllOperations:调用所有操作对象的cancel方法。
waitUntilAllOperationsAreFinished:阻塞当前线程,等待所有操作都完成。
5.KVO兼容的属性
operations - 只读
operationCount - 只读
maxConcurrentOperationCount - 可读写
suspended - 可读写
name -可读写
6.内部实现:
在iOS4.0及以后,NSOperationQueue内部实现使用GCD,iOS4.0之前,使用NSThread实现
🚀🚀🚀🚀🚀🚀
66. 什么时候使用NSMutableArray,什么时候使用NSArray?

当数组在程序运行时,需要不断变化的,使用NSMutableArray,当数组在初始化后,便不再改变的,使用NSArray。

需要指出的是,使用NSArray只表明的是该数组在运行时不发生改变,即不能往NSAarry的数组里新增和删除元素,但不表明其数组內的元素的内容不能发生改变。

NSArray线程安全的,NSMutableArray不是线程安全的,多线程使用到NSMutableArray需要注意

🚀🚀🚀🚀🚀🚀
 67. 简述什么是Object-C简便构造方法?
简便构造方法一般由CocoaTouch框架提供,如NSNumber的 + numberWithBool: + numberWithChar: + numberWithDouble: + numberWithFloat: + numberWithInt:

Foundation下大部分类均有简便构造方法,我们可以通过简便构造方法,获得系统给我们创建好的对象,并且不需要手动释放。
🚀🚀🚀🚀🚀🚀
 68. 解释什么是NSManagedObject模型?
NSManagedObjectNSObject的子类 ,也是coredata的重要组成部分,它是一个通用的类,实现了core data 模型层所需的基本功能,用户可通过子类化NSManagedObject,建立自己的数据模型。
🚀🚀🚀🚀🚀🚀
69. 解释什么是NSManagedobjectContext?
NSManagedObjectContext
它是一个对象,用来表示一个对象空间或者你用来请求,创建,和保存被管理对象的上下文

概述
上下文由一组相关的模型象组成,这些对象就是表示由一个或多个持久存储组成的内部一致的视图.

在关联的上下文中,对托管对象的更改被保存在内存中,直到将该上下文保存到一个或多个持久化存储中。

一个托管对象实例只存在于一个上下文中但是一个对象的多个副本可以存在于不同的上下文中

因此,对象对于特定的上下文是唯一的

生命周期管理
上下文是一个强大的对象,在托管对象的生命周期中扮演着中心角色,其职责从生命周期管理(包括故障管理)到验证、反向关系处理和撤消/重做。

通过上下文,您可以从持久存储中检索或“获取”对象,对这些对象进行更改,然后丢弃这些更改,或者通过上下文将它们提交回持久存储。

上下文负责监视对象中的更改,并维护一个撤消管理器,以便您能够对撤消和重做进行更细粒度的控制。

您可以插入新的对象并删除已获取的对象,并将这些修改提交给持久存储

外部存储获取的所有对象都是在一个上下文中注册的,并带有全局标识符(NSManagedObjectID的一个实例),用于惟一标识每个对象到外部存储
🚀🚀🚀🚀🚀🚀
  70. 使用+ beginAnimations:context:以及上述Block的定义,写出一个可以完成?
+?(void)transitionWithView:(UIView?*)view?duration:(NSTimeInterval)duration?options:(UIViewAnimationOptions)options?animations:(void?(^)(void))animations?completion:(void?(^)(BOOL?finished))completion?NS_AVAILABLE_IOS(4_0);
🚀🚀🚀🚀🚀🚀

相关文章:

IOS面试题object-c 61-70

61. 阐述isKindOfClass、isMemberOfClass、selector作用分别是什么?isKindOfClass:作用是某个对象属于某个类型或者继承自某类型。 isMemberOfClass:某个对象确切属于某个类型。 selector:通过方法名,获取在内存中的函…...

Git指令reset的参数soft、mixed与hard三者之间的区别

主要内容 reset默认不写参数,与使用mixed参数含义一样 为了描述简洁,使用下图说明: #mermaid-svg-LtChquRXlEV1j6og {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-LtChquRXlEV1j…...

RGMII 接口调试

目录 硬件检查 软件检查 调试步骤 硬件检查 硬件工程师检查原理图和PCB,核查RGMII线路连接是否正确,PHY的 TX连接对端 RX,PHY的RX连接对端TX,原理图上以引脚序号引脚名 引脚类型(输入还是输出)逐一核查RGMII接口各个网络&#…...

Ubuntu 24.04 抢先体验换国内源 清华源 阿里源 中科大源 163源

Update 240307:Ubuntu 24.04 LTS 进入功能冻结期 预计4月25日正式发布。 Ubuntu22.04换源 Ubuntu 24.04重要升级daily版本下载换源步骤 (阿里源)清华源中科大源网易163源 Ubuntu 24.04 LTS,代号 「Noble Numbat」,即将与我们见面! Canonica…...

软件设计模式:模板方法模式

1. 简介 模板方法模式是一种行为型设计模式,它定义了一个算法的骨架,将一些步骤延迟到子类中实现。这样,可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 2. 使用条件 模板方法模式适用于以下情况: 算法…...

【算法】Hash存储——开放寻址法

模拟散列表 维护一个集合,支持如下几种操作: I x,插入一个整数 x; Q x,询问整数 x是否在集合中出现过; 现在要进行 N次操作,对于每个询问操作输出对应的结果。 输入格式 第一行包含整数 N&am…...

STM32CubeIDE基础学习-STM32CubeIDE软件程序下载方法

STM32CubeIDE基础学习-STM32CubeIDE软件代码下载方法 文章目录 STM32CubeIDE基础学习-STM32CubeIDE软件代码下载方法前言第1章 代码下载第2章 下载器固件更新总结 前言 编写完代码,一般都会选择在线下载程序的方式进行验证该程序是否正确,如果发现结果和…...

LeetCode 174.地下城游戏 Python题解

地下城游戏 # 地下城游戏 """ 恶魔们抓住了公主并将她关在了地下城dungeon的右下角。地下城是由mxn个房间组成的二维网格。我们英勇的骑士最初被安置在左上角的房间里, 他必须穿过地下城并通过对抗恶魔来拯救公主。 骑士的初始健康点数为一个正整数…...

指令调用模板

也就是这边指令通过id和map会定位到一个结构体,然后这个结构再赋值两个成员,一个是函数一个是指令类型,然后这个函数是模板的实例化 使用的时候就传进去,这只是参数,最开始初始化的时候模板就已经实例化了。然后关于模…...

(五)关系数据库标准语言SQL

注:课堂讲义使用的数据库 5.1利用SQL语言建立数据库 5.1.1 create Database 5.1.2 create schema...authorization... 创建数据库和创建模式的区别: 数据库是架构的集合,架构是表的集合。但在MySQL中,他们使用的方式是相同的。 …...

第二十天-数据分析

1.介绍 1.什么是数据分析 1.以下4个纬度结合起来的数据科学 2.数据分析的特殊性...

鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:外描边设置)

设置组件外描边样式。 说明: 从API Version 11开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 outline outline(value: OutlineOptions) 统一外描边样式设置接口。 卡片能力: 从API version 11开始,该…...

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:CalendarPicker)

日历选择器组件,提供下拉日历弹窗,可以让用户选择日期。 说明: 该组件从API Version 10开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 子组件 无 接口 CalendarPicker(options?: CalendarOptions) …...

wordpress免费主题下载

免费wordpress模板下载 简洁大气的文化艺术类wordpress模板,可以免费下载,实用易上手,新手也适合。 https://www.wpniu.com/themes/304.html 免费wordpress主题下载 高端大气上档次的wordpress主题,也可以是免费的,…...

【字典合集】SecLists-更全面的渗透测试字典 v2024.1

下路路径 SecLists-更全面的渗透测试字典 v2024.1 简介 SecLists 是一个致力于收集各种安全字典的开源项目。这些字典包括但不限于:密码字典、用户名字典、网络扫描结果、漏洞利用载荷、web shells、可用于渗透测试的Payloads、以及其他各种安全相关的字典。 这…...

PID控制器组(完整SCL代码)

PID控制器组不是什么新概念,是在PID控制器的基础上,利用面向对象的思想对对象进行封装 批量实例化。 1、增量式PID https://rxxw-control.blog.csdn.net/article/details/124363197https://rxxw-control.blog.csdn.net/article/details/1243631972、完全增量式PID https:/…...

五、OpenAI实战之Assistants API

在8线小城的革委会办公室里,黑8和革委会主任的对话再次展开。 黑8:主任,您知道吗?除了OpenAI API,现在还有一项新的技术叫做Assistants API,它可以帮助我们更好地进行对话和沟通。 主任:Assis…...

创邻科技获评环紫金港创新生态圈智源创新企业

3月1日,由杭州城西科创大走廊管理委员会指导,中共杭州市西湖区委员会、西湖区人民政府主办的“环紫金港创新生态圈”行动推进大会暨2024年紫金港科技城经济高质量发展大会在杭州举办。凭借重要的生态位置和创新业务成果,创邻科技受邀参会并被…...

CentOS7配置静态IP

文章目录 CentOS7配置静态IP一、前言1.场景2.环境 二、正文1)确定网络接口名称2)配置固定IP和DNS3)重启网络服务4)验证配置 CentOS7配置静态IP 一、前言 1.场景 在 CentOS7上设置静态 IP 和 DNS。 2.环境 CentOS Linux 版本&…...

【Python】正则

特殊字符转义 以下字符都需要用 反斜线(\)来进行特殊字符的转义。 \n - 换行符 \t - 制表符 \ - 反斜线本身 . - 点号(任意单个字符) 星号(0次或多次重复前面的元素) 加号(1次或多次重复前面的…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...

离线语音识别方案分析

随着人工智能技术的不断发展&#xff0c;语音识别技术也得到了广泛的应用&#xff0c;从智能家居到车载系统&#xff0c;语音识别正在改变我们与设备的交互方式。尤其是离线语音识别&#xff0c;由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力&#xff0c;广…...