
面试题
文章平均质量分 92
程序员的修养
好好学习
展开
-
Runtime--isa_t
Runtime–isa_t通过上一篇的文章,我们了解到类、协议都继承自objc_object,在这个结构中只有一个变量–isa,它是isa_t类型,并且对象结构中很多方法都是对isa的操作,所以我们单独介绍一下这个变量。struct objc_object {private: isa_t isa;public: // ISA() assumes this is NOT a tagged pointer object Class ISA(); // getIsa(原创 2021-03-24 14:48:54 · 120 阅读 · 0 评论 -
UIViewController面试必备
UIViewController你应该知道的事情1、生命周期vc初始化方法,view没有初始化initWithCoder:使用StoryBoard创建ViewController的生命周期如下,StoryBoard内部生成nib文件,将nib信息放在Coder中,调用initWithCoder:初始化ViewController及其view属性-[ViewController initWithCoder:]-[ViewController awakeFromNib]-[ViewCont原创 2021-03-24 11:53:22 · 165 阅读 · 0 评论 -
iOS 字典转模型
关于这个知识点,并没有太多难点,其中主要要记住的就是字典转模型,字典转模型一般步骤如下: (1)首先创建一个模型类,创建需要数据的 get 和 set 方法,由编译器合成 例如:@property (nonatomic, copy) NSString *answer; @property (nonatomic, copy) NSString *title;@property (nonatom原创 2017-02-25 15:54:06 · 464 阅读 · 0 评论 -
runtime基础、消息转发
runtime术语 1、Class、id#if !OBJC_TYPES_DEFINED/// An opaque type that represents an Objective-C class.typedef struct objc_class *Class;/// Represents an instance of a class.struct objc_object { Cl原创 2017-02-26 10:43:33 · 304 阅读 · 0 评论 -
runtime完成的功能举例
动态变量控制 在程序中,xiaoming的age是10,后来被runtime变成了20,来看看runtime是怎么做到的。1.动态获取XiaoMing类中的所有属性[当然包括私有] `Ivar *ivar = class_copyIvarList([self.xiaoming class], &count);` 2.遍历属性找到对应name字段 `const char *转载 2017-02-26 12:52:34 · 314 阅读 · 0 评论 -
NSURLSession-介绍、上传、下载(2)
NSURLConnection在iOS9被宣布弃用,NSURLSession从13年发展到现在,终于迎来了它独步江湖的时代.NSURLSession是苹果在iOS7后为HTTP数据传输提供的一系列接口,比NSURLConnection强大,坑少。 一、NSURLSession的简介 1.NSURLSession的创建 (1)使用shareSession返回session的单例,创建原创 2017-02-24 14:08:48 · 1859 阅读 · 2 评论 -
二叉树的非递归的三种遍历
非递归的方式来实现树的先序、中序、后序遍历。实现代码上传至 https://github.com/chenyufeng1991/TraverseBinaryTreeNoRecursion 。 (1)非递归实现先序遍历 在非递归的三种遍历中,先序遍历是最简单的。思路如下:首先把根节点入栈,并且在根节点出栈的时候访问根节点;同时判断根节点的右子树是否为空,若不为空,则右孩子入栈;判断根节点的左孩子转载 2017-03-21 16:37:48 · 411 阅读 · 0 评论 -
消息转发-什么时候会报unrecognized selector的异常?
简单来说:当调用该对象上某个方法,而该对象上没有实现这个方法的时候, 可以通过“消息转发”进行解决。 简单的流程如下,在上一题中也提到过:objc是动态语言,每个方法在运行时会被动态转为消息发送,即:objc_msgSend(receiver, selector)。 objc在向一个对象发送消息时,runtime库会根据对象的isa指针找到该对象实际所属的类,然后在该类中的方法列表以及其父类方法转载 2017-02-20 16:03:30 · 14639 阅读 · 0 评论 -
常见的内存泄漏及检测方法
iOS内存泄漏的常见情况 1、声明delegate为strong类型,简而言之,如果父VC持有子VC,并设置子VC的delegate为self(也就是父VC),这样的结果就是子VC也间接持有了父VC,造成循环引用,在Pop子VC的时候不会调用delloc。一个例子: 一个UITableViewController 对象a通过retain获取了UITableView对象b的所有权,这个UI原创 2017-03-31 15:11:31 · 1445 阅读 · 0 评论 -
由HTTPS和HTTP的区别引出的总结
今天看到一个面试题:HTTPS和HTTP的区别,虽然自己在项目中已经支持https,但是其原理有点模糊,今天做一下总结 问题: HTTPS和HTTP的区别主要如下: 1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。 2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。 3、http和https使用的是完全不同的连接原创 2017-03-17 17:40:56 · 771 阅读 · 0 评论 -
iOS之事件的传递和响应机制-原理篇
前言:按照时间顺序,事件的生命周期是这样的: 事件的产生和传递(事件如何从父控件传递到子控件并寻找到最合适的view、寻找最合适的view的底层实现、拦截事件的处理)->找到最合适的view后事件的处理(touches方法的重写,也就是事件的响应)其中重点和难点是: 1.如何寻找最合适的view 2.寻找最合适的view的底层实现(hitTest:withEvent:底层实现)(一转载 2017-03-03 16:19:53 · 610 阅读 · 0 评论 -
通知与线程
在A线程中注册一个通知,B线程触发通知,方法的执行在哪个线程中———在B线程中 例如: A线程 NSLog(@”注册%@”,[NSThread currentThread]); [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(fangfa) name:shiyan object:原创 2016-11-12 14:33:21 · 677 阅读 · 0 评论 -
@property 的本质是什么?ivar、getter、setter 是如何生成并添加到这个类中的
@property 的本质是什么? “属性” (property)作为 Objective-C 的一项特性,主要的作用就在于封装对象中的数据。 Objective-C 对象通常会把其所需要的数据保存为各种实例变量。实例变量一般通过“存取方法”(access method)来访问。其中,“获取方法” (getter)用于读取变量值,而“设置方法” (setter)用于写入变量值。在正规的转载 2017-02-20 15:08:22 · 1547 阅读 · 0 评论 -
OC实现的各种简单常见的排序算法
//直接插入排序.每步将一个待排序的记录按其关键字的大小插到前面已经排序的序列中的适当位置,直到全部记录插入完毕为止。-(void)initDirectChaSort:(NSMutableArray *)array{ NSInteger j=0; for (NSInteger i=0; i<[array count]-1; i++) { if ([[array ob转载 2017-02-21 10:39:01 · 446 阅读 · 0 评论 -
UIView
(1)view基本介绍 先来看看官方API的解释:The UIView class defines a rectangular area on the screen and the interfaces for managing the content in that area. At runtime, a view object handles the rendering of any原创 2016-10-26 15:42:42 · 367 阅读 · 0 评论 -
controllers间通信-delegate、Notification、KVO比较
在不过分耦合的前提下,controllers间怎么进行通信。在IOS应用不断的出现三种模式来实现这种通信: 1.委托delegate; 2.通知中心Notification Center; 3.键值观察key value observing,KVOdelegate 优势 1.要委托的事件要在delegate协议中有定义 2.如果delega原创 2017-02-23 12:37:44 · 332 阅读 · 0 评论 -
@synchronized
如果你已经使用 Objective-C 编写过任何并发程序,那么想必是见过 @synchronized 这货了。@synchronized 结构所做的事情跟锁(lock)类似:它防止不同的线程同时执行同一段代码。但在某些情况下,相比于使用 NSLock 创建锁对象、加锁和解锁来说,@synchronized 用着更方便,可读性更高。译者注:这与苹果官方文档对 @synchronized 的介绍有少许转载 2017-02-23 13:11:41 · 243 阅读 · 0 评论 -
常用排序算法
1、交换排序-冒泡排序 (1)思想:从待排数据自上向下对相邻的两个元素进行比较,必要时交换,使大的元素下沉,小的元素上冒。 第一次比较时,将待排数据中的最大的元素,沉到最低;第二次比较将第二大元素沉到最低,…… 所以如果有n个元素,进行n-1次排序;对于第i次排序,内部需要交换的次数为n-i-1; (2)代码//冒泡排序void bubbleSort(int a[], int n){原创 2017-02-23 10:13:28 · 255 阅读 · 0 评论 -
面试题
原文出处: Jack_lin(@死翼之鸟-林 ) 序言目前形势,参加到iOS队伍的人是越来越多,甚至已经到供过于求了。今年,找过工作人可能会更深刻地体会到今年的就业形势不容乐观,加之,培训机构一火车地向用人单位输送iOS开发人员,打破了生态圈的动态平衡。矫情一下,言归正传,我奉献一下,为iOS应聘者梳理一下面试题,希望能助一臂之力!OC的理解与特性OC作为一门面向对象的语言,自然具有面向对象的语言转载 2016-09-14 13:59:06 · 293 阅读 · 0 评论