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

IOS面试题object-c 1-10

1、简述Object-C的理解与特性?

OC 作为一门 面向对象 的语言,自然具有面向对象的语言特性:封装、继承、多态

它既具有 静态语言的特性(如C++),又有 动态语言的效率(动态绑定、动态加载等)。

总体来讲,OC确实是一门不错的编程语言,Objective-C 具有相当多的动态特性,表现为三方面:

动态类型(Dynamic typing)、动态绑定(Dynamic binding)和 动态加载(Dynamic loading)。

动态——必须到运行时(run time)才会做的一些事情。

动态类型:即运行时再决定对象的类型,这种动态特性在日常的应用中非常常见,简单来说就是id类型。

事实上,由于静态类型的固定性和可预知性,从而使用的更加广泛。

静态类型是强类型,而动态类型属于弱类型,运行时决定接受者。

动态绑定:基于动态类型,在某个实例对象被确定后,其类型便被确定了,该对象对应的属性和响应消息也被完全确定。

动态加载:根据需求加载所需要的资源,最基本就是不同机型的适配,例如,在Retina设备上加载@2x的图片,而在老一些的普通苹设备上加载原图,让程序在运行时添加代码模块以及其他资源,用户可根据需要加载一些可执行代码和资源,而不是在启动时就加载所有组件,可执行代码可以含有和程序运行时整合的新类

2、Objective-C 中是否支持垃圾回收机制?

Objective-C 是支持垃圾回收机制的 (Garbage collection简称GC) , 但是apple的移动终端中 , 是不支持GC的,Mac桌面系统开发中是支持的.

移动终端开发是支持ARC(Automatic Reference Counting的简称), ARC是在 IOS5 之后推出的新技术 , 它与GC的机制是不同的。

我们在编写代码时, 不需要向对象发送release或者autorelease方法, 也不可以调用delloc方法, 编译器会在合适的位置自动给用户生成release消息(autorelease), ARC 的特点是自动引用技术简化了内存管理的难度.

3、OC协议的基本概念和协议中方法默认为什么类型?

Objective-C中的协议是一个方法列表, 且多少有点相关。

它的特点是可以被任何类使用(实现), 但它并不是类(这里我们需要注意), 自身不会实现这样方法, 而是又其他人来实现协议经常用来实现委托对象(委托设计模式)。

如果一个类采用了一个协议, 那么它必须实现协议中必须需要实现的方法, 在协议中的方法默认是必须实现(@required), 添加关键字@optional, 表明一旦采用该协议, 这些“可选”的方法是可以选择不实现的。

4、简述Objective-C中可修改和不可以修改类型?
Objective-C中可修改不可修改的集合类,就是可动态添加修改不可动态添加修改
比如NSArrayNSMutableArray前者在初始化后的内存控件就是固定不可变的,后者可以添加等,可以动态申请新的内存空间
5、当我们调用一个静态方法时,需要对对象进行 release 吗?

不需要, 静态方法 (类方法) 创建一个对象时, 对象已被放入自动释放池。

在自动释放池被释放时,很有可能被销毁

6、当我们释放我们的对象时,为什么需要调用[super dealloc]方法,它的位置又是如何的呢?

因为子类的某些实例是继承自父类的, 因此需要调用[super dealloc]方法, 来释放父类拥有的实例,其实也就是子类本身的。

一般来说我们优先释放子类拥 有的实例,最后释放父类所拥有的实例

 7、简述static、self、super关键字的作用?
函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值.
模块内的 static 全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问.
在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明.
在类中的static成员变量属于整个类所拥有,对类的所有对象只有一份拷贝.
self: 当前消息的接收者。 
super: 向父类发送消息
8、 isMemberOfClass 和 isKindOfClass 联系与区别?
+isKindOfClass 类方法是从当前类的isa指向(也就是当前类的元类)开始。沿着superclass继承链查找判断和对比类是否相等。
-isKindOfClass 对象方法从 [self class](当前类)开始,沿着superclass继承链查找判断和对比类是否相等。
+is MemberOfClass 类方法直接判断当前类的isa指向(也就是当前类的元类)和对比类是否相等。
-isMwemberOfClass 对象方法是直接判断[self class](当前类)和对比类是否相等。
isKindOfClass和isMemberOfClass的区别
isKindOfClass来确定一个对象是否是一个类的实例,或者是该类祖先类的实例。
isMemberOfClass只能用来判断前者,不能用来判断后者
isKindOfClass 能检测任何的类都是基于NSObject类这一事实,而isMemberOfClass却不可以。
 9、IOS Object-C对象可以被copy的条件?
只有实现了NSCopyingNSMutableCopying协议的类的对象才能被拷贝, 分为不可变拷贝和可变拷贝,具体区别戳这;

NSCopying协议方法为:
- (id) copyWithZone:(NSZone *)zone {
        MyObject *copy = [[[self class] allocWithZone: zone] init];
        copy.username = [self.username copyWithZone:zone];
        return copy;
}

10、在某个方法中 self.name = _name,name = _name 它 们有区别吗,为什么?
前者 (self.name = _name)是存在内存管理的setter方法赋值, 它会对_name对象进行保留或者拷贝操作
后者(name = _name)是普通赋值 。

一般来说,在对象的方法里成员变量和方法都是可以访问的,我们通常会重写Setter方法来执行某些额外的工作。

比如说,外部传一个模型过来,那么我会直接重写Setter方法,当模型传过来时,也就是意味着数据发生了变化,那么视图也需要更新显示,则在赋值新模型的同时也去刷新UI。

相关文章:

IOS面试题object-c 1-10

1、简述Object-C的理解与特性? OC 作为一门 面向对象 的语言,自然具有面向对象的语言特性:封装、继承、多态。 它既具有 静态语言的特性(如C),又有 动态语言的效率(动态绑定、动态加载等&#…...

原生JavaScript,根据后端返回扁平JSON动态【动态列头、动态数据】生成表格数据

前期准备&#xff1a; JQ下载地址&#xff1a; https://jquery.com/ <!DOCTYPE html> <html><head><meta charset"utf-8"><title>JSON动态生成表格数据,动态列头拼接</title><style>table {width: 800px;text-align: cen…...

hadoop报错:HADOOP_HOME and hadoop.home.dir are unset. 解决方法

参考&#xff1a;https://blog.csdn.net/weixin_45735242/article/details/120579387 解决方法 1.下载apache-hadoop-3.1.0-winutils-master 官网下载地址&#xff1a; https://github.com/s911415/apache-hadoop-3.1.0-winutils win配置系统环境&#xff1a; 然后重启idea…...

基于Springboot的高校物品捐赠管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的高校物品捐赠管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系…...

【硬件工程师面经整理29_FPGA】

文章目录 1 nand nor的区别&#xff0c;速度差异的原因&#xff1f;2 nand驱动方式&#xff1f;3 异步信号处理方法4 异步FIFO的深度是如何计算的5 异步复位同步释放的优缺点6 问了FPGA的内部组成&#xff1f;7 LE中查找表的实现原理&#xff1f;8 IOB的主要组成部分&#xff1…...

Ping工作原理

文章目录 目的ping网络协议 OSIICMP什么是ICMP作用功能报文类型查询报文类型差错报文类型ICMP 在 IPv4 和 IPv6 的封装ICMP 在 IPv4 协议中的封装ICMP 在 IPv6 协议中的封装ICMP 头部日常ping 排除步骤ping 查询报文使用code扩展目的 本文主要是梳理ping的工作原理- 揭开 ICMP…...

python调用jar中java方法 静态类为例

java package test;public class test {// run方法返回当前脚本路径public static String runV1(String s) {return "log: " System.getProperty(s);}}python import jpype from jpype import * import osif __name__ "__main__":print(os.environ[JAV…...

tcp服务器客户端通信(socket编程)

目录 1.编程流程 2.代码演示 2.1 服务器代码 2.2 客户端代码 3.注意 3.1 ping命令 3.2 netstat命令 3.3 为什么memset? 3.4 哪个会阻塞? 3.5 显示连接信息 1.概念 1.1 编程流程 1.2 connect与listen connect方法执行后&#xff0c;会进行三次握手&#xff0c;建立连…...

chatgpt 镜像站汇总

无需登录直接可用的&#xff1a; ChatGPT Web - GPT-3.5-16k免费使用&#xff0c;吐字块&#xff0c;每日20次数&#xff0c;不需要登陆思研AI - 免费时限制每小时6次提问https://chatgpt.nicelinks.site/ - 免费使用频次有限制抱歉&#xff0c;站点已暂停 - 免费由开发者提供A…...

java面试题:为什么 SQL 语句不要过多的 join?

1 考察点 面试官主要想了解面试者对于 SQL 优化的理解以及在实际工作中如何处理 SQL 语句的性能问题。要回答好这个问题&#xff0c;只需要了解 join 操作会带来哪些影响&#xff0c;而这些影响对程序产生什么样的影响就行了。这个问题就是面试官想考察我们是不是平日里善于积…...

JAVA实战开源项目:学生日常行为评分管理系统(Vue+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、系统设计2.1 功能模块设计2.2.1 登录注册模块2.2.2 用户管理模块2.2.3 评分项目模块2.2.4 评分数据模块2.2.5 数据字典模块 2.3 可行性设计2.4 用例设计2.5 数据库设计2.5.1 整体 E-R 图2.5.2 用户2.5.3 评分项目2.5.4 评分数据2.5.…...

力扣-[700. 二叉搜索树中的搜索]

递归法 确定递归函数的参数和返回值 递归函数的参数传入的就是根节点和要搜索的数值&#xff0c;返回的就是以这个搜索数值所在的节点。 代码如下&#xff1a; public TreeNode searchBST(TreeNode root, int val) 确定终止条件 如果root为空&#xff0c;返回null&#xff0c…...

Hive-源码分析一条hql的执行过程

一、源码下载 下面是hive官方源码下载地址&#xff0c;我下载的是hive-3.1.3&#xff0c;那就一起来看下吧 https://dlcdn.apache.org/hive/hive-3.1.3/apache-hive-3.1.3-src.tar.gz 二、上下文 <Hive-源码带你看hive命令背后都做了什么>博客中已经讲到了hive命令执行…...

软考71-上午题-【面向对象技术2-UML】-UML中的图2

一、用例图 上午题&#xff0c;考的少&#xff1b;下午题&#xff0c;考的多。 1-1、用例图的定义 用例图展现了一组用例、参与者以及它们之间的关系。 用例图用于对系统的静态用例图进行建模。 可以用下列两种方式来使用用例图&#xff1a; 1、对系统的语境建模&#xff1b…...

使用hashmap优化时间复杂度,leetcode1577

1577. 数的平方等于两数乘积的方法数 已解答 中等 相关标签 相关企业 提示 给你两个整数数组 nums1 和 nums2 &#xff0c;请你返回根据以下规则形成的三元组的数目&#xff08;类型 1 和类型 2 &#xff09;&#xff1a; 类型 1&#xff1a;三元组 (i, j, k) &#xff…...

3、设计模式之工厂模式1

工厂模式是什么&#xff1f;     工厂模式是一种创建者模式&#xff0c;用于封装和管理对象的创建&#xff0c;屏蔽了大量的创建细节&#xff0c;根据抽象程度不同&#xff0c;主要分为简单工厂模式、工厂方法模式以及抽象工厂模式。 简单工厂模式 看一个具体的需求 看一个…...

一个Promise全新API

1. 资讯速览 最近&#xff0c;Promise 新出了一个方法&#xff0c;已经进入 Stage 3 &#xff08;候选阶段&#xff09; &#xff0c;相信很快就能达到 Stage 4 &#xff08;完成阶段&#xff09;&#xff0c;并在项目中广泛使用。 这个方法就是 Promise.withResolvers。它是…...

【力扣hot100】刷题笔记Day25

前言 这几天搞工作处理数据真是类似我也&#xff0c;还被老板打电话push压力有点大的&#xff0c;还好搞的差不多了&#xff0c;明天再汇报&#xff0c;赶紧偷闲再刷几道题&#xff08;可恶&#xff0c;被打破连更记录了&#xff09;这几天刷的是动态规划&#xff0c;由于很成…...

webpack5零基础入门-4使用webpack处理less文件

1.安装less npm install less -D 2.创建less文件 .box{width: 100px;height: 100px;background: red; } 3.引入less文件并打包 执行npx webpack 报错无法识别less文件 4.安装less-loader并配置 npm install less-loader9 -D 这里指定一下版本不然会因为node版本过低报错 …...

Python机器学习预测+回归全家桶,新增TCN,BiTCN,TCN-GRU,BiTCN-BiGRU等组合模型预测...

截止到本期&#xff0c;一共发了4篇关于机器学习预测全家桶Python代码的文章。参考往期文章如下&#xff1a; 1.机器学习预测全家桶-Python&#xff0c;一次性搞定多/单特征输入&#xff0c;多/单步预测&#xff01;最强模板&#xff01; 2.机器学习预测全家桶-Python&#xff…...

深度剖析同比和环比,万能向导计算没烦恼

先了解2个概念&#xff0c;同期和环期 同期&#xff1a;前一个环上的同一个位置&#xff0c;所以叫同。 环期&#xff1a;在一个环上的前一段等长区间&#xff0c;所以叫环&#xff0c;可以这么记忆。但其实环期就是以自身为周期的同期&#xff0c;因为以自身为周期&#xff…...

VibeVoice开源大模型部署指南:从零开始配置CUDA 12.4环境

VibeVoice开源大模型部署指南&#xff1a;从零开始配置CUDA 12.4环境 1. 项目概述 VibeVoice是微软开源的一款轻量级实时语音合成系统&#xff0c;基于VibeVoice-Realtime-0.5B模型构建。这个模型虽然参数量只有0.5B&#xff0c;但在实时语音合成方面表现出色&#xff0c;特别…...

LabVIEW 环境下TSP与SCPI 指令对比分析

TSP&#xff08;Test Script Processor&#xff09;是泰克吉时利面向高端自动化测试系统推出的仪器端嵌入式脚本处理引擎&#xff0c;基于 Lua 语法&#xff0c;支持本地逻辑运算、多模块协同与后台运行&#xff1b;SCPI&#xff08;Standard Commands for Programmable Instru…...

Phi-4-mini-reasoning人工智能伦理评估框架初探

Phi-4-mini-reasoning人工智能伦理评估框架初探 1. 引言&#xff1a;当AI开始监督AI 最近测试Phi-4-mini-reasoning模型时&#xff0c;发现一个有趣现象&#xff1a;这个擅长逻辑推理的小型模型&#xff0c;在分析其他AI生成内容时展现出惊人的"挑错"能力。它能准确…...

nli-distilroberta-base在多跳问答系统中的应用:中间推理步骤逻辑验证

nli-distilroberta-base在多跳问答系统中的应用&#xff1a;中间推理步骤逻辑验证 1. 理解nli-distilroberta-base的核心能力 nli-distilroberta-base是基于DistilRoBERTa模型的自然语言推理(NLI)服务&#xff0c;专门用于判断两个句子之间的逻辑关系。这个轻量级模型保留了R…...

图解目标检测算法之CenterNet

&#x1f31e;欢迎来到图解深度学习的世界 &#x1f308;博客主页&#xff1a;卿云阁 &#x1f48c;欢迎关注&#x1f389;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f339;2026年3月20日&#x1f339; ✉️希望可以和大家一起完成…...

真机部署仅需几小时!PhyAgentOS开源项目,实现零代码跨本体迁移

开箱即用、零代码跨本体、多机协同、决策可追溯的全链路开发底座 ——具身智能自进化操作系统 目录 01 PhyAgentOS 是什么 核心创新&#xff1a;认知—物理解耦 hal_watchdog&#xff1a;那个关键的‘看门狗’ 四层架构&#xff1a;模块化、可插拔 自进化能力&#xff…...

25套HTML数据可视化大屏模板|覆盖智慧交通、医疗、城市、政务等11大行业应用

温馨提示&#xff1a;文末有联系方式25套行业级HTML可视化大屏源码合集 本提供25套高还原度、响应式设计的HTML数据可视化大屏源码&#xff0c;全部基于纯前端技术&#xff08;HTML/CSS/JS&#xff09;构建&#xff0c;无需后端依赖&#xff0c;可快速部署至各类内网或公有云环…...

DDD难落地?就让AI干吧! - cleanddd-skills介绍嘶

AI训练存储选型的演进路线 第一阶段&#xff1a;单机直连时代 早期的深度学习数据集较小&#xff0c;模型训练通常在单台服务器或单张GPU卡上完成。此时直接将数据存储在训练机器的本地NVMe SSD/HDD上。 其优势在于IO延迟最低&#xff0c;吞吐量极高&#xff0c;也就是“数据离…...

OpenClaw个人知识库:Qwen3-32B+Obsidian自动化信息归档系统

OpenClaw个人知识库&#xff1a;Qwen3-32BObsidian自动化信息归档系统 1. 为什么需要自动化知识管理 作为一个长期被信息过载困扰的技术写作者&#xff0c;我每天需要处理数十篇技术文章、研究报告和行业动态。传统的手动分类方式让我陷入两个困境&#xff1a;一是收藏的文章…...