
iOS面试相关
众拾达人
如果你不改变什么,那什么都不会改变!
展开
-
iOS面试题 3. weakself和strongSelf的使用
问题: 我们知道,在使用 block 的时候,为了避免产生循环引用,通常需要使用 weakSelf 与 strongSelf,写下面这样的代码:__weak typeof(self) weakSelf = self;[self doSomeBlockJob:^{ __strong typeof(weakSelf) strongSelf = weakSelf; if (strong原创 2017-08-08 10:40:27 · 1099 阅读 · 0 评论 -
iOS开发_KVO,KVC
KVC:键值编码主要作用是: (1)通过键值路径为对象的属性赋值。主要是可以为私有的属性赋值。AppleViewController *appleVC = [[AppleViewController alloc]init];[appleVC setValue:@"橘子" forKey:@"name"];如果对象A的属性是一个对象B,要设置对象B的属性[person setValue:@"旺财"原创 2018-04-23 15:38:46 · 356 阅读 · 0 评论 -
iOS开发—RunLoop详解
随着oc语言不断迭代,苹果的API也是逐步完善,RunLoop在实际开发中应用的越来越少。但是在面试中,假如面试官问你RunLoop的相关知识了解,那就相当于面试官在问你从事iOS开发工作的真实年限问题。那么下面我们就详细了解一下RunLoop的相关知识。RunLoop是一种运行循环机制,其实就是死循环。它有两个作用:1.保证程序不退出 2.负责监听事件。我们可以理解为Runloop在不断的...原创 2018-04-25 15:51:05 · 1054 阅读 · 0 评论 -
iOS进阶_KVC(基本使用&KVC赋值取值过程分析&KVC自定义&异常处理)
KVC(Key-value coding)键值编码基本使用实例:WTPerson.h#import <Foundation/Foundation.h>@interface WTPerson : NSObject{// @public //@protect默认 NSString * _name;}/** name **///@property(n...原创 2018-12-07 17:26:32 · 1390 阅读 · 1 评论 -
iOS进阶_KVC(进阶使用)
1、KVC与字典//KVC与字典-(void)dictionaryTest{ WTPerson * p = [WTPerson new]; NSDictionary * dict = @{ @"name":@"wt", @"age&原创 2018-12-12 18:17:01 · 508 阅读 · 0 评论 -
iOS自动化布局-AutoLayout约束优先级
约束的优先级AutoLayout添加的约束中也有优先级(Priority),优先级的数值1~1000,分为两种情况:一种情况是我们经常添加的各种约束,默认值1000(最大值)优先执行,条件允许的话系统会自动满足我们的约束需求。第二种就是固有约束(intinsic content size)严格说这种更像UILabel和UIButton的一种属性,但是在Autolayout中需要满足属性取值...原创 2018-12-03 18:29:31 · 2195 阅读 · 0 评论 -
iOS架构-组件化(项目框架搭建)
组件化设计方案方案1.静态库方式 + Carthage方式方案2.第三方管理工具CocoaPods方式、Carthage方式组件化设计应用1、项目开发需求:业务分层四层(示例项目分四层,很多主流项目也是这么分层的)网络层:NetworkLayer(组件一)-> 静态库->.a文件业务层:BusinessLayer(组件二)-> 静态库->.a文件数据原创 2019-02-13 10:27:33 · 1052 阅读 · 0 评论 -
iOS架构-组件化(Carthage管理工具)
一、Carthage项目管理工具使用?Step 1:安装/更新Homebrew工具1、/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"2、brew install carthage3、brew link carthage4、brew ins...原创 2019-02-22 10:17:38 · 1143 阅读 · 0 评论 -
iOS架构-组件化(项目框架搭建2)
静态库引用静态库如果像上图一样,直接在业务层组件引用数据层组件的文件,则会报错,因为组件之间没有建立引用关系。如下图静态库如何引用Pods第三方库拷贝Podfile文件到项目,打开终端执行pad install直接引用Pod下面的YYModel,项目会报错配置第三方库层级调用1.网络基础库结构2.网路层和业务层(调用关系)->交互3.业务分层结构4.U...原创 2019-02-14 11:32:07 · 1631 阅读 · 1 评论 -
iOS面试小贴士
最全的iOS面试题及答案iOS面试小贴士———————————————回答好下面的足够了————————————-多线程、特别是NSOperation 和 GCD 的内部原理。运行时机制的原理和运用场景。SDWebImage的原理。实现机制。如何解决TableView卡的问题。block和代理的,通知的区别。block的用法需要注意些什么。strong,weak,retain,assign,copy转载 2018-05-03 10:18:30 · 328 阅读 · 0 评论 -
iOS_RunTime基础讲解
RunTime运行时是在iOS面试时经常会问到的问题,如果面试官问你有没有用到过RunTime运行时,你该怎么回到呢? 没用过?面试官会觉得你没有钻研底层代码的能力 用过?好吧,你是怎么用的?讲解一下你理解的RunTime说到RunTime就不得不得说OC的消息机制,我们都知道OC是面向C的,它为C增添了许多面向对象的特性。而OC将很多静态语言在在编译和链接时做的事,交给一位幕后英雄就是RunT原创 2018-04-20 11:31:33 · 248 阅读 · 0 评论 -
iOS单例
单例:一个类必须只有一个对象。客户端必须通过一个众所周知的入口访问这个对象。 基本的单例实现:要实现比较好的访问,我们就会想到用工厂方法创建对象,提供统一的创建方法的地方给外部使用。要实现仅有一个对象,就会想到用一个全局的东西保存这个对象,然后在创建对象的工厂方法中判断一下,如果对象存在,那么就返回该对象。如果不存在,就造一个返回出去。首次写单例WTShare * s_ins...原创 2018-04-19 18:55:06 · 218 阅读 · 0 评论 -
iOS开发之 __block 与 __weak的区别理解
资料来源1 资料来源2__block对象在block中是可以被修改、重新赋值的。使用了__weak修饰符的对象,作用等同于定义为weak的property。自然不会导致循环引用问题,因为苹果文档已经说的很清楚,当原对象没有任何强引用的时候,弱引用指针也会被设置为nil。因此,__block和__weak修饰符的区别其实是挺明显的: 1.__block不管是ARC还是MRC模式下都可以使用,可以原创 2017-07-28 10:32:22 · 2471 阅读 · 0 评论 -
iOS面试题(2.类变量的@protected,@private,@public,@package声明各有什么含义)拓展:常用框架和第三方框架
2.类变量的@protected,@private,@public,@package声明各有什么含义 @private:作用范围只能在自身类 @protected:作用范围在自身类和继承自己的子类(默认) @public:作用范围最大,可以在任何地方被访问 @package:这个类型最常用于框架类的实例变量,同一个包内能用,跨包就不能访问。对于框架类的拓展:iOS常用基础框架 Founda原创 2017-06-07 12:06:56 · 874 阅读 · 0 评论 -
iOS面试题学习(1)内存管理
1.简述OC中内存管理机制。与retain配对使用的方法师dealloc还是release,为什么?需要alloc配对使用的方法是dealloc还是release,为什么?readwrite,readonly,assign,reatin,copy,nonatomic,actomic,strong,weak属性的作用?答案:OC中使用了一种叫做引用计数的管理机制来管理内存中的对象。OC中的每个对象都对原创 2017-06-06 15:24:22 · 548 阅读 · 0 评论 -
iOS开发常用设计模式
一 iOS中都有什么设计模式?1.代理模式 2.观察者模式 3.MVC模式 4.单例模式 5.策略模式 6.工厂模式二 各个设计模式的作用?(一)代理模式在cocoa框架中的Delegate模式中,委托人往往是框架中的对象(视图中的控件、表视图神马的),代理人往往是视图控制器对象。在我们这个例子中UITableView是委托人,代理人首先得满足一个条件:就是在.h文件中申明它拥有代理资原创 2017-08-08 15:57:54 · 368 阅读 · 0 评论 -
iOS详解runtime面试工作
runtime概念: 什么情况下用runtime? runtime 消息机制的调用流程 || 能体现runtime 强大之处的应用场景?runtime概念Objective-C是基于C的,它为C添加了面向对象的特性。它将很多静态语言在编译和链接时期做的事放到了runtime运行时来处理,可以说runtime是我们Objecttive-C的幕后工作者。runtime是一套纯C的API。而OC就是运原创 2018-04-02 11:18:20 · 2037 阅读 · 0 评论 -
iOS面试题汇总
沙盒的目录结构iOS应用沙盒即文件系统目录,与其他应用的文件系统隔离Documents:保存应用运行时生成的需要持久化的数据,如游戏进度、涂鸦软件的绘图等信息, 该目录会被iTunes同步备份。Library/Caches:保存应用运行时生成的需要持久化的数据,iTunes同步设备时不会备份该目录。一般存储体积大、不需要备份的非重要数据,如缓存图片或者离线数据(地图等)。Lib...原创 2018-04-02 14:55:24 · 1008 阅读 · 0 评论 -
iOS面试之网络编程
Socket编程一、网络各个协议:TCP/IP、SOCKET、HTTP等网络七层由下往上分别为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。 其中物理层、数据链路层和网络层通常被称作媒体层,是网络工程师所研究的对象; 传输层、会话层、表示层和应用层则被称作主机层,是用户所面向和关心的内容。 http协议 对应于应用层 tcp协议 对应于传输层 ip...原创 2018-04-02 15:40:51 · 2195 阅读 · 0 评论 -
iOS内存详解
堆栈iOS内存条中有一部分是只读的,有一部分是可读可写的。我们操作的是可读可写部分,那么在这块内存当中,我们怎么划分堆和栈呢?我们可以限定死堆栈的内存空间,但是这样显然是不好的,那么可以使用相对弹性的空间,一个从上往下扩展,一个从下往上扩展。假如两个碰在一起,就会造成StackOverFlow堆栈溢出。 NSString *a =@"12"; //打印对象的内存地址 NSLog(@"内...原创 2018-04-19 18:51:59 · 387 阅读 · 0 评论 -
iOS架构-组件化(项目实战-项目首页架构)
UI架构设计设计模式:外观模式、代理模式、适配器模式(adapter)注意:1版本只是搭建结构!一. 1.0-Tab搭建二. 1.1-新增UICollectionView主页->整体设计基于->UICollectionView(滑动组件)->左右滑动嵌套-&am原创 2019-03-01 10:20:09 · 8479 阅读 · 1 评论