![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试题
文章平均质量分 95
田风有
1.负责公司iphone客户端软件的开发,参与项目需求分析,产品设计。
2.按计划完成产品的代码编写,产品测试,并且保证代码质量。
3.按照开发流程编写相应的模块的设计文档。
4.跟进ios平台终端技术的更新,设计和实现新产品和功能。
5.对ios平台开发技术进行研究。
6.提供产品相关技术支持。
7.代码的编写和维护.
展开
-
iOS多线程-各种线程锁
线程安全是怎么产生的常见比如线程内操作了一个线程外的非线程安全变量,这个时候一定要考虑线程安全和同步。- (void)getIamgeName:(NSMutableArray *)imageNames{//假如每个进来的都是一个线程 /*1.imageNames是线程外的变量,这个时候就需要考虑线程安全, 因为,假如我们当前imageNames的个数是1,线程A和B同时原创 2017-06-01 14:32:31 · 300 阅读 · 0 评论 -
C++ 二叉树创建、遍历访问、删除
代码包含:二叉树数组创建(前序)、前序、中序、后序遍历、节点访问、删除代码说明:该代码使用模板建立,一些地方并未完善,比如array[index]==-1,仅仅使用于数字类型,如果二叉树存储的是char或string,需在这之前判断类型,给予特定的空标识,对于节点的访问,使用一个函数指针传递对节点的操作,删除只能使用后序遍历的方式#includeusing namespace转载 2017-07-13 10:04:01 · 356 阅读 · 0 评论 -
单链表的插入与删除
在链表这种特殊的数据结构中,链表的长短需要根据具体情况来设定,当需要保存数据时向系统申请存储空间,并将数据接入链表中。对链表而言,表中的数据可以依此接到表尾或连结到表头,也可以视情况插入表中;对不再需要的数据,将其从表中删除并释放其所占空间,但不能破坏链表的结构。这就是下面将介绍的链表的插入与删除。1. 链表的删除如创建一个学生学号及姓名的单链表转载 2017-07-13 10:06:46 · 826 阅读 · 0 评论 -
runtime
目录:runtime 概念 runtime 消息机制 runtime 方法调用流程「消息机制」 runtime 运行时常见作用 runtime 常用开发应用场景「工作掌握」 1.runtime 交换方法 2.runtime 给分类动态添加属性 3.runtime 字典转模型(Runtime 考虑三种情况实现) runtime 运行时其它作用「面试熟悉」 1.动态添加方法 ...原创 2017-07-01 15:49:15 · 586 阅读 · 0 评论 -
Runtime Method Swizzling开发实例汇总
目前已更新实例汇总:实例一:替换ViewController生命周期方法实例二:解决获取索引、添加、删除元素越界崩溃问题实例三:防止按钮重复暴力点击实例四:全局更换控件初始效果实例五:App热修复实例六:App异常加载占位图通用类封装实例七:全局修改导航栏后退(返回)按钮Method Swizzling通用方法封装在列举之前,我们可以将Method Swizzling功能封原创 2017-07-07 16:21:58 · 484 阅读 · 0 评论 -
iOS - OC字典底层实现模拟(数组+链表)
为什么要这么设计 ?原因有二: 1. 每个对象创建时,都默认生成一个hashCode ,也就是一个经过哈希算法生成的一串数字 。当利用key去取字典中的value时,若是使用遍历或者二分查找等方法,效率都相对较低 ,于是出现了根据每个key生成的hashCode将该键值对放到hashCode对应的数组中的指定位置,这样当用key去取值时,便不必遍历去获取,即可以根据hashCode直接转载 2017-07-10 14:13:01 · 816 阅读 · 0 评论 -
(二叉树相关算法实现-iOS)
什么是二叉树?在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”和“右子树”,左子树和右子树同时也是二叉树。二叉树的子树有左右之分,并且次序不能任意颠倒。二叉树是递归定义的,所以一般二叉树的相关题目也都可以使用递归的思想来解决,当然也有一些可以使用非递归的思想解决,我下面列出的一些算法有些采用了递归,有些是非递归的。什么是二叉排序树?二叉排序树又叫二叉查找转载 2017-07-10 14:16:11 · 258 阅读 · 0 评论 -
(2023年)iOS面试题及答案,以及添加Flutter 面试问题,Swift面试题
第一大类OC面试题 一.设计模式是什么? 你知道哪些设计模式,并简要叙述?设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类型的事情。1). MVC模式:Model View Control,把模型 视图 控制器 层进行解耦合编写。2). MVVM模式:Model View ViewModel 把模型 视图 业务逻辑 层进行解耦和编写。3). 单例模式:通过static...原创 2017-07-17 09:13:12 · 43652 阅读 · 4 评论 -
iOS开发内购详细
一、最近公司很多的项目用到了内购,抽空整理下内购的详细内容吧。如对你有帮助,请不要吝惜打赏和喜欢,谢谢!一....iOS开发内购全套图文教程======================第一部分协议===============第一步.png第二步.jpg第三步.jpg第四步.png第五步.png原创 2017-07-26 10:48:35 · 1771 阅读 · 1 评论 -
iOS开发网络篇—Socket编程
一、网络各个协议:TCP/IP、SOCKET、HTTP等网络七层由下往上分别为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。其中物理层、数据链路层和网络层通常被称作媒体层,是网络工程师所研究的对象;传输层、会话层、表示层和应用层则被称作主机层,是用户所面向和关心的内容。http协议对应于应用层tcp协议对应于传输层ip协议对应于网络层三者本质上没有可比性。原创 2017-08-10 17:03:45 · 278 阅读 · 0 评论 -
IOS常见的加密方法,常用的MD5和Base64
MD5 iOS代码加密: 1. MD5 iOS代码加密 创建MD5类,代码如下:#import #import @interface MD5String : NSObject+(NSString *)MD5:(NSString *)input;@end 2. #import "MD5String.h"@implementation原创 2017-07-27 14:35:52 · 427 阅读 · 1 评论 -
iOS开发中数据库常用的语句
一. 数据如何存入数据库! { 1.创建一张表.(根据存储的数据特点,创建对应的表!) 2.将数据存储在"表"中 } 二. 数据库使用 { 1. database(DB) File: 数据库文件路径! 数据库中的所有数据都保存在这个文件中! 数据库(SQL)语句是不区分大小写的! 如果是系统的关键字大写!自己的就用小写原创 2017-07-27 17:09:45 · 345 阅读 · 0 评论 -
区别方法isKindOfClass、isMemberOfClass和isSubclassOfClass
一、苹果官方API的解释是:isKindOfClass:Returns a Boolean value that indicates whether the receiver is an instance of given class or an instance of any class that inherits from that class.isMemberOfClass:Returns ...转载 2018-03-12 15:17:08 · 1658 阅读 · 0 评论 -
ios敏捷开发的理解
一,根据以下几个问题来谈谈敏捷开发1.什么是敏捷开发?2.为什么使用敏捷开发?3.如实使用敏捷开发?4.采用敏捷开发的产品效果?二.什么是敏捷开发?敏捷开发是一种价值和原则,指导我们更加高效的开发。 敏捷开发以用户需求为核心,采用迭代,循序渐进的方式开发软件,目的在于快捷覆盖,响应市场需求。 大项目划分小项目,分别完成,独立运行。 敏捷开发特征。 敏捷开发原则...原创 2019-03-13 14:37:56 · 1610 阅读 · 0 评论 -
C++常用排序算法研究
首先介绍一个计算时间差的函数,它在头文件中定义,于是我们只需这样定义2个变量,再相减就可以计算时间差了。函数开头加上 clock_t start = clock(); 函数结尾加上 clock_t end = clock(); 于是时间差为: end - start不过这不精确的 多次运行时间是不同的 和CPU 进程有关吧(先总结一下:以下算法以时间和空间以转载 2017-07-13 10:02:37 · 235 阅读 · 0 评论 -
method 详解
定义先来看一下method相关的定义 typedef struct objc_method *Method; struct objc_method { SEL method_name; char *method_types; IMP method_imp; } struct objc_method_list { str原创 2017-07-03 09:56:00 · 1304 阅读 · 0 评论 -
Objective-C实现常用的4种排序算法
OC实现的4种排序又来了!4种排序分别是:快速排序、冒泡排序、选择排序、插入排序,其他的我就不写了,因为OC里的数组中不能存放基本数据类型,如int不能存放,只能放对象,所以所有的数据我用了NSNumber类型,一开始我直接用>、=、、=、[objc] view plain copy// // SortUtil.h原创 2017-07-10 15:15:07 · 330 阅读 · 0 评论 -
iOS:WKWebView与UIWebView的区别
iOS8以后,苹果推出了新框架Wekkit,提供了替换UIWebView的组件WKWebView。使用WKWebView,速度会更快,占用内存少。WKWebView的特性:在性能、稳定性、功能方面有很大提升,直观体现是内存占用变少;允许JavaScript的Nitro库加载并使用(UIWebView中限制);支持了更多的HTML5特性;高达60fps的滚原创 2017-05-16 16:34:31 · 707 阅读 · 0 评论 -
MAC上charles使用教程总结
Charles是用来抓包的.安装请自行google, 天朝有破解版,需要更换软件的jar文件,文件路径笔者的版本是Paste_Image.png界面基本简介这个是设置Mac 代理的, 设置之后,Charles会自动抓取Mac上的网络请求设置页面这里有一些坑, 例如原创 2017-05-16 16:33:35 · 5599 阅读 · 1 评论 -
delegate、notification、KVO各优缺点 - xuym
delegate的优势:1.非常严格的语法。所有将听到的事件必须是在delegate协议中有清晰的定义。2.如果delegate中的一个方法没有实现那么就会出现编译警告/错误3.协议必须在controller的作用域范围内定义4.在一个应用中的控制流程是可跟踪的并且是可识别的;5.在一个控制器中可以定义定义多个不同的协议,每个协议有不同的delegate原创 2017-05-16 15:51:15 · 396 阅读 · 0 评论 -
iOS多线程编程——GCD与NSOperation总结
新开一个线程,能提高速度,避免阻塞主线程毕竟多线程嘛,几个线程一起跑任务,速度快,还不阻塞主线程,简直完美。在某些场合,我们还见过另一个“高深”的名词——“异步”。这东西好像和多线程挺类似,经过一番百度(阅读了很多质量层次不齐的文章)之后,很多人也没能真正搞懂何为“异步”。于是,带着对“多线程”和“异步”的懵懂,很多人又开开心心踏上了多线程编程之旅,比如文章待会儿会提到原创 2017-05-16 15:50:36 · 281 阅读 · 0 评论 -
objc 中的 block
1.block的数据结构首先,关于block的数据结构和runtime是开源的,可以在llvm项目看到,或者下载苹果的libclosure库的源码来看。苹果也提供了在线的代码查看方式,其中包含了很多示例和文档说明。这两个地方的定义是相同的:structBlock_descriptor_1{uintptr_treserved;uintptr_tsize原创 2017-05-16 15:49:11 · 354 阅读 · 0 评论 -
iOS开发多线程篇—线程安全
一、多线程的安全隐患资源共享1块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源比如多个线程访问同一个对象、同一个变量、同一个文件当多个线程访问同一块资源时,很容易引发数据错乱和数据安全问题示例一:示例二:问题代码:#import"YYViewController.h"@in原创 2017-05-16 15:47:39 · 508 阅读 · 0 评论 -
深入理解RunLoop
RunLoop 的概念一般来讲,一个线程一次只能执行一个任务,执行完成后线程就会退出。如果我们需要一个机制,让线程能随时处理事件但并不退出,通常的代码逻辑是这样的:functionloop(){initialize();do{varmessage=get_next_message();process_message(message);原创 2017-05-16 15:45:02 · 230 阅读 · 0 评论 -
iOS Cell异步图片加载优化,缓存机制详解。
为了防止图片多次下载,我们需要对图片做缓存,缓存分为内存缓存于沙盒缓存,我们当然两种都要实现。由于tableViewCell是有重用机制的,也就是说,内存中只有当前可见的cell数目的实例,滑动的时候,新显示cell会重用被滑出的cell对象。这样就存在一个问题:一般情况下在我们会在cellForRow方法里面设置cell的图片数据源,也就是说如果一个cell的imagevie原创 2017-05-16 15:44:06 · 339 阅读 · 0 评论 -
内存恶鬼drawRect
标题有点吓人,但是对于drawRect的评价倒是一点都不过分。在平日的开发中,随意覆盖drawRect方法,稍有不慎就会让你的程序内存暴增。下面我们来看一个例子。去年的某天午后,北京的雾霾依旧像现在这样醇厚,我的同事辉哥像往常一样与我楼下约烟。我见辉哥表情凝重,便询问究竟。辉哥做了一个画板功能,但是苦于内存问题一直得不到解决。画板功能很简单,就是记录手指触摸的轨迹然后绘制在屏幕上。下面原创 2017-05-16 15:43:27 · 310 阅读 · 0 评论 -
iOS多线程之 GCD
GCD的优势GCD是苹果公司为多核的并行运算提出的解决方案GCD会自动利用更多的CPU内核(比如双核、四核)GCD会自动管理线程的生命周期(创建线程、调度任务、销毁线程)程序员只需要告诉GCD想要执行什么任务,不需要编写任何线程管理代码(但是更优的做法是我们自己管理线程,这个后面会说到)GCD的两个核心任务:执行什么操作 队列:用来存放任务GCD使用的两个步骤创建任务:确...原创 2019-03-13 16:03:49 · 426 阅读 · 0 评论