问题 我们知道,在使用 block 的时候,为了避免产生循环引用,通常需要使用 weakSelf 与 strongSelf,写下面这样的代码: __weak typeof(self) weakSelf = self; [self doSomeBlockJob:^{ __strong typeof(weakSelf) strongSelf = weakSelf; if (strongSelf) { ... } }]; 那么请问:什么时候在 block 里面用 self,不需要使用 weak sel…
问题 有没有这样一个需求场景,block 会产生循环引用,但是业务又需要你不能使用 weak self? 如果有,请举一个例子并且解释这种情况下如何解决循环引用问题. 答案 需要不使用 weak self 的场景是:你需要构造一个循环引用,以便保证引用双方都存在.比如你有一个后台的任务,希望任务执行完后,通知另外一个实例.在我们开源的 YTKNetwork 网络库的源码中,就有这样的场景. 在 YTKNetwork 库中,我们的每一个网络请求 API 会持有回调的 block,回调的 block…
所有的内容大部分来自于网络的搜集,所以我不是一个创造者,而是一个搬运工.我尽量把题目,尤其是参考答案的出处列明.若有任何疑问,建议,意见,请联系我. 第一部分面试题来源于iOS-Developer-Interview-Questions,用[◇]标示,难度是根据我自己的水平来标识的. 其中大部分答案来源于没阳光的午后的三篇 你能用到的iOS面试题(一) 你能用到的iOS面试题(二) 你能用到的iOS面试题(三) 没阳光的午后还写了其他很多有质量的iOS开发文章,大家可以去学习. 第二部分面试题来…
前言 招聘高峰期来了,大家都非常积极地准备着跳槽,那么去一家公司面试就会有一堆新鲜的问题,可能不会,也可能会,但是了解不够深.本篇文章为群里的小伙伴们去要出发公司的笔试题,由笔者整理并提供笔者个人参考答案.注意,仅供参考,不代表绝对正确. 参考答案不唯一,大家可以根据自己的理解回答,没有必要跟笔者的一样.参考笔者的答案,也许给你带来灵感! 题目照 1.编程规范问题 这题看不清楚,不过可以看得出来是编程规范问题.所以呢,笔者也就没有办法说明哪些不合理了.不过笔者曾经为公司的出过一个编程规范文档,后…
1. 我们说的oc是动态执行时语言是什么意思? 答案:多态. 主要是将数据类型的确定由编译时,推迟到了执行时. 这个问题事实上浅涉及到两个概念.执行时和多态. 简单来说.执行时机制使我们直到执行时才去决定一个对象的类别,以及调用该类别对象指定方法. 多态:不同对象以自己的方式响应同样的消息的能力叫做多态.意思就是如果生物类(life)都用有一个同样的方法-eat; 那人类属于生物,猪也属于生物,都继承了life后.实现各自的eat,可是调用是我们仅仅需调用各自的eat方法. 也就是不同的对象以自…
block是可以捕捉上下文的特殊代码块. block可以访问定义在block外的变量,当在block中使用时,它就会为其在作用域内的每个标量变量创建一个副本. 如果通过self拥有一个block,然后又在block中改变了实例变量,就会出错. 例如: self.block = ^(NSString *aString) { self.aLabel.text = aString; }); 这段代码中,self保留了block,同时block又保留了self,会引发循环保留.很危险. 如果未使用ARC…
使用了第三方库, 有看他们是怎么实现的吗? 例:SD.YY.AFN.MJ等! <1>.SD为例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 1.入口 setImageWithURL:placeholderImage:options: 会先把 placeholderImage …
过段时间打算跳槽,找了一些面试题来做,在这里做个总结方便review,希望能对要面试的童鞋有帮助. 以下为面试题: 运行以下代码会有什么结果 NSString *str1 = @"str1"; NSString *str2 = [NSString stringWithFormat:@"str1"]; NSString *str3 = @"str1"; NSLog(@"str1 == str2 --- %d", str1 ==…
1. Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么? 答: Object-c的类不可以多重继承:可以实现多个接口,通过实现多个接口可以完成C++的多重继承:Category是类别,一般情况用分类好,用Category去重写类的方法,仅对本Category有效,不会影响到其他类与原有类的关系. 2. #import 跟#include 又什么区别,@class呢, #import<> 跟 #import””又什么区别?…
iOS面试题: 一:网络理论知识的理解 1:Internet物理地址和IP地址转换采用什么协议 ARP(Address Resolution Protocol)地址解析协议 2:Internet采用哪种网络协议?该协议的主要层次结构? TCP / ip  应用层.传输层.网络层.数据链接层 二:Object-C.iPhone的面试相关 1:什么是多态 多态:不同对象以自己的方式响应相同的消息的能力叫做多态. 2.你项目中用到什么设计模式 MVC模式.单例模式.委托模式.观察者模式 1)MVC模式…