首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

超实用的ios面试技巧,90%的人都不知道……

1 Objective-C ●你是否接触过OC中的反射机制?...这就解释了:为什么我们的应用可以在无人操作的时候休息,需要让它干活的时候又能立马响应。 对其它线程来说,runloop默认是没有启动的,runloop只在你要和线程有交互时才需要。...NSRunLoop*runloop = [NSRunLoop currentRunLoop]; ●Obiective-C如何对已有的方法,添加自己的功能代码以实现类似记录日志这样的功能?...Swift还引入了可选项类型(Optionals),用于处理变量值不存在的情况。可选项的意思有两种,一种变量是存在的,例如等于X,而是变量值根本不存在。...当一个对象调用setValue方法时,方法内部会做以下操作: ①检查是否存在相应key的set方法,如果存在,就调用set方法 ②如果set方法不存在,就会查找与key相同名称并且带下划线的成员属性,如果有

78370

RunTime 之使用前须知

该对象对应的属性响应的消息也被完全确定,这就是动态绑定。 在继续之前,需要明确Objective-C中 消息 的概念。...调用一个实例的方法,所做的是向该实例的指针发送消息,实例在收到消息后,从自身的实现中寻找响应这条消息的方法。 动态绑定所做的,即是在实例所属类确定后,将某些属性和相应的方法绑定到实例上。...在Cocoa层,我们一般向一个NSObject对象发送-respondsToSelector:或者-instancesRespondToSelector:等来确定对象是否可以对某个SEL做出响应,而在OC...我们可以通过NSObject的一些方法获取运行时信息或动态执行一些消息: class 返回对象的类; isKindOfClass 和 isMemberOfClass检查对象是否在指定的类继承体系中...; respondsToSelector 检查对象能否相应指定的消息; conformsToProtocol 检查对象是否实现了指定协议类的方法; methodForSelector 返回指定方法实现的地址

69920
您找到你想要的搜索结果了吗?
是的
没有找到

NSObject头文件解析 消息机制 Runtime解读 (一)

)retainWeakReference UNAVAILABLE_ATTRIBUTE; //检查是否为aClass的子类 + (BOOL)isSubclassOfClass:(Class)aClass..., 这里就不多讲了 返回的方法地址可以直接用, 但是要注意里面是否有self或者外部属性, 否则会报错 例子: IMP imp = [aClass methodForSelector:@selector..."); [super doesNotRecognizeSelector:aSelector]; } 当我们调用该类实例不存在的方法时, 就会先打印"调用了不存在的方法", 然后再crash 也可以使用这个方法来让对象不能响应某一个方法...Ojective-C 2.0不支持的,但实际上可以用响应的函数获取这些属性,具体有哪些响应函数大家可以导入后输入class_get...看看 例如:如果想要获取Class...//给对象类添加NSCopying协议 class_addProtocol([aClass class], @protocol(NSCopying)); //检查是否有遵循

1.1K31

Swift 3到5.1新特性整理

抹平嵌套可选 检查整数是否为偶数 字典compactMapValues()方法 撤回的功能: 带条件的计数 Swift 4.2 CaseIterable协议 警告和错误指令 动态查找成员 有条件地遵循协议的增强...检查整数是否为偶数 SE-0225添加了, isMultiple(of:)来检查整数是否为偶数, 和if rowNumber % 2 == 0效果一样。...---- Swift 4.2 CaseIterable协议 SE-0194提议的实现,Swift4.2 增加了CaseIterable协议,能够给枚举的allCases属性自动产生所有的枚举的数组。...Swift 4.2提供了@dynamicMemberLookup的属性,和subscript(dynamicMember:)陪着使用,实现动态的属性的取值。...self } } Swift 4.2 你可以这样 var loggedIn = false loggedIn.toggle() ---- Swift 4.1 Equatable和Hashable协议

4.6K20

iOS16 和 Xcode14 如何改进 App 大小和运行时性能

概要: 本文主要介绍苹果在 Xcode14 和 iOS 16 上,如何从编译层面和运行时层面,优化 Swift 和 Objective-C runtime, 来让 app 二进制体积更小,运行更快,启动更快...协议检查(Protocol checks) 先来看一个例子,这个例子主要说明在编译期间编译器无法完全判定某个值是否遵循某个协议。...所以,这种检查常常发生运行时,借助计算好的协议检查元数据(protocol check metadata),运行库知道这个特殊对象是否符合协议,并且检查成功。...这正是协议检查优化为什么让启动加快的原因。而且在纯 Swift 项目中,协议无处不在,这种优化相对更明显。...因为这里存在相同的代码,我们可以考虑共享它,并且只在每个 selector 中发出它一次,而不是每次发送消息时都生成这段指令代码。

3.7K30

iOS工程师必看的 20 道 面试题

反之,只要有任何一个强引用指向该对象,它就会一直存在于内存中。 strong 代表着强引用,是默认属性。当一个对象被声明为 strong 时,就表示父层级对该对象有一个强引用的指向。...在Swift和Objective-C的混编项目中,如何Swift文件中调用Objective-C文件中已经定义的方法?如何在Objective-C文件中调用Swift文件中定义的方法?...Swift文件中若要规定固定的方法或属性暴露给Objective-C使用,可以在方法或属性前加上@objc来声明。...运行阶段,接收者self.tableview会响应这个消息,期间可能会直接执行、转发消息,也可能会找不到方法崩溃。 所以整个流程是编译器翻译 –> 给接收者发送消息 –> 接收者响应消息三个流程。...其中接收者如何响应代码,就发生在运行时(runtime)。

3.6K40

iOS面试资料参考答案总结

UI 1、事件响应链是如何传递的? 手势的点击会发生两个重要事情,事件传递和事件响应。...关于这一话题的深入讨论可以参考这两篇文章: 为什么要存在MetaClass 为什么要设计metaclass 6、类方法是存储到什么地方的?类属性呢? 类方法和类属性都是存储到元类中的。...类属性Swift用的多些,OC中很少有人用到,但其实它也是有的,写法如下: @interface Person : NSObject // 在属性类别中加上class @property (class...词法分析:把代码切成一个个token,比如大小括号等于号还有字符串 语法分析:验证语法是否正确,合成抽象语法树AST 静态分析:查找代码错误 类型检查:动态和静态 目标代码的生成与优化,包括删除多余指令...5、LRU算法是否了解,如何实现一套LRU算法?

1.5K40

Runtime系列(一)-- 基础知识

随着Swift 的推出,OC 中也加入了类型检查。现在我们就可以很及时的减少这类错误的产生。 动态绑定 基于动态类型,在某个实例对象被确定后,其类型便被确定了。...该对象对应的属性响应的消息也被完全确定,这就是动态绑定。在继续之前,需要明确Objective-C中消息的概念。...调用一个实例的方法,所做的是向该实例的指针发送消息,实例在收到消息后,从自身的实现中寻找响应这条消息的方法。...在Cocoa层,我们一般向一个NSObject对象发送-respondsToSelector:或者-instancesRespondToSelector:等来确定对象是否可以对某个SEL做出响应,而在OC...(resolveThisMethodDynamically)) { //向[self class]中新加入返回为void的实现,SEL名字为aSEL,实现的具体内容为dynamicMethodIMP

51920

Swift 2开发必备小Tip

Tip 1 柯里化(Currying) 在Swift 中可以将方法进行柯里化(Currying)1,也就是把接受多个参数的方法变换成接受第一个参数的方法,并且返回接受余下的参数并返回结果的新方法。...举个例子,在Swift 中我们可以这样写出多个括号的方法: 然后通过只传入第一个括号内的参数进行调用,这样将返回另一个方法: 或者: 柯里化是一种量产相似方法的好办法,可以通过柯里化一个方法模板来避免写出很多重复代码...举一个实际应用时的例子,在SwiftSelector只能使用字符串生成。这面临一个很严重的问题,就是难以重构,并且无法在编译期间进行检查,其实这是十分危险的行为。...因为这个原因,我们在写接口给别人用时需要多考虑是否使用mutating 来修饰方法,比如定义为mutatingfunc myMethod()。...所以说在接口里用mutating修饰方法,对于class 的实现是完全透明,可以当作不存在的。

37330

测试面试题集锦(五)| 自动化测试与性能测试篇(附答案)

检查一个条件,如果它为真,就不做任何事,用例通过。如果它为假,则会抛出 AssertError 并且包含错误信息。 3. UI 自动化测试中,如何做集群?...尽量使用 by_css_selector() 方法 by_css_selector() 方法的执行速度比 by_id() 方法的更快,因为源码中 by_id() 方法会被自动转成 by_css_selector...如何判断一个页面上元素是否存在?...方法一:用 try…except… 方法二:用 elements 定义一组元素方法,判断元素是否存在,存在返回 True,不存返回 False 方法三:结合 WebDriverWait 和 expected_conditions...后端需主要关注的是: 响应时间:接口从请求到响应返回的时间。 并发用户数:同一时间点请求服务器的用户数,支持的最大并发数。 内存占用:也就是内存开销。

1.7K10

Spring Boot 从入门到实践系列教程(5)- SpringBoot执行器

/ health Endpoint 该/健康端点被用来检查正在运行的应用程序的运行状况或状态。它通常由监控软件执行,以提醒我们运行的实例是否因其他原因而关闭或变得不健康。...HealthIndicator返回的一些信息本质上是敏感的 - 但我们可以配置endpoints.health.sensitive = false来公开更详细的信息,如磁盘空间,消息代理连接,自定义检查等...但是,添加了新的接口ReactiveHealthIndicator以实现响应式运行状况检查。...复合运行状况检查通过CompositeHealthIndicator存在于1.x中。此外,在2.x中,我们可以将CompositeReactiveHealthIndicator用于其反应对应物。...在之前的日志中,我们可以看到WebFlux如何公开我们的新端点。我们是否会切换到MVC,它只需委托该技术而无需更改任何代码。

1.2K20

2020年6月最新iOS面试题总结(答案篇)

UI 1、事件响应链是如何传递的? 手势的点击会发生两个重要事情,事件传递和事件响应。...关于这一话题的深入讨论可以参考这两篇文章: 为什么要存在MetaClass 为什么要设计metaclass 6、类方法是存储到什么地方的?类属性呢? 类方法和类属性都是存储到元类中的。...类属性Swift用的多些,OC中很少有人用到,但其实它也是有的,写法如下: @interface Person : NSObject // 在属性类别中加上class @property (class...词法分析:把代码切成一个个token,比如大小括号等于号还有字符串 语法分析:验证语法是否正确,合成抽象语法树AST 静态分析:查找代码错误 类型检查:动态和静态 目标代码的生成与优化,包括删除多余指令...5、LRU算法是否了解,如何实现一套LRU算法?

9K41

Swift学习总结

元组也可以作为函数参数 6、闭包就是objc中的Block 闭包语法: {(参数)->返回类型 in //代码 } 闭包可以利用swift的类型推断系统去除参数和返回值的类型信息来简化闭包。...基本数据类型String、Int、Double、Float、Array、Dictionary都可以检查相等性。新增语法===来检测俩实例的同一性,但值类型不能用同一性检查。...do { try//用try关键字标记存在异常的方法 } catch { //在这里我们可以 } Swift允许二次抛出异常,在调用可能存在异常的方法时,用try标记,但是可以不用do catch,而是让当前方法声明上标记...Swift是不可以访问实例的引用计数,但是有个函数(isKnownUniquelyReferenced)可以判断一个实例是否是对某个实例的唯一引用。...———————————————————————————————————————————————————————————————————— 1、Object C中 @selector语法换成#selector

2.9K20
领券