Q 为什么不推荐使用继承?A 继承是面向对象的四大特性之一, 用来表示类之间的 is-a 关系, 可以解决代码复用的问题. 虽然继承有诸多作用, 但继承层次过深, 过复杂, ...
基于接口而非实现编程这条原则的另一个表述方式是"基于抽象而非实现编程". 后者表述的方式其实更能体现这条原则的设计初衷, 我们做软件开发的时候一定要有抽象意识, 封装意识, ...
Q 抽象类和接口的语法特性?抽象类不允许被实例化, 只能被继承, 他可以包含属性(实例变量)和方法. 方法既可以包含代码实现也可以不包含代码实现. 不包含代码实现的方法叫做抽...
三种违反面向对象风格的典型代码设计 滥用setter, getter方法在设计实现类的时候, 除非真的需要,否则尽量不要给属性定义setter方法,除此之外, 尽管gette...
Q 什么是面向过程编程? 什么是面向过程编程语言?A 实际上 这个问题没有严格的官方定义, 理解这两个概念最好的方式是跟面向对象编程和面向对象编程语言进行对比. 相较于面向对...
Q 什么是封装?A 封装也在做信息隐藏或者数据保护,类通过暴露有限的访问接口,授权外部进行通过类提供的方式来访问内部信息或者数据. 他需要编程语言提供的权限访问控制语法来支持...
Q 什么是面向对象编程?A 面向对象编程是一种编程范式(编程风格),它以类和对象作为组织代码的基本单元,并将封装, 继承, 多态, 抽象四个特性作为代码设计和实现的基石 Q ...
Q 为什么要学习设计模式?A 应对面试中的设计模式相关问题 防止被别人吐槽代码写的烂 提高复杂代码的设计和开发能力(为了让别人看不懂) 读源码,学框架 事半功倍(为了看懂 人...
Xcode 11 默认吧 project的 bitcode 设置为了yes, 所以 不光需要查看 targets的 还需要看一下 project的
Xcode Failed to verify bitcode in PLPlayerKit.framework今天在用Xcode打包时,碰到这种报错: 解决方法:可能是库的版本问题,可以试着链接低版本的库。 比如PLPlayerKit.framework,只有3.3.3及其以下版本都...
/Users/kian/.rvm/gems/ruby-2.3.3/gems/cocoapods-1.5.3/lib/cocoapods/command.rb:118:in g...
Q: int *p 怎么理解?A:p是一个变量名, int * 标识p变量只能存储int类型变量的地址 什么是指针? 指针是C语言的灵魂 定义 Q: 地址是什么?A: 地址是...
Q: 什么情况下会产生死锁?A: 使用sync函数往当前的串行队列添加任务,会造成当前串行队列的死锁(互相等待) sync的特性: 必须执行完当前任务才能往下走串行队列的特性...
没有runloop 就意味着app一运行就会退出(换句话说,runloop保护着app不会被退出) NSRunLoop - Foundation 框架 CFRunLoop -...
第五步,我觉得YY的图没有写错,那个dispatch 确实是一个source1(这是个名字),
而你表达的却是 这个第五步 有没有需要处理的事件(这是内容)
关于runloop,好多人都理解错了!跟多数开发者一样,我也曾经迷惑于runloop,最初只了解可以通过runloop一些监听事件的通知来做一些事情,优化性能。关于runloop源码的基础知识,本文不做论述,可以...
目录 UIWindow,UIView,CALayer的区别事件传递和响应机制UIView block动画实现原理 一 UIWindow,UIView,CALayer的区别 1...
不要把鸡蛋放一个鸡蛋道理大家都懂,可是很多人只有一个鸡蛋。
这份面试题来自朋友的大厂的Interview以及我个人的答题 请写出下面代码执行顺序以及每次执行前等待了多长时间?并解释下原因? 答:等待1秒输出2,等待两秒输出1,再输出3...