在许多公司的技术面试中,面试官通常会提出一些“iOS Block面试”类型的问题,这类问题主要是考察应聘者的技术能力和解决问题的思路。本文将会详细探讨如何应对这类问题,包括从背景定位到扩展应用的全程,帮助读者更好地理解和掌握相关技巧。
在理解面试题之前,我们首先需要明确我们所面临的“初始技术痛点”:
> “作为一名开发者,我常常陷入对复杂问题的思考中,无法快速找到合理的解决方案。”
我们在工
1.风格纠错题2. 什么情况使用 weak 关键字,相比 assign 有什么不同?什么情况使用 weak 关键字?在 ARC 中,在有可能出现循环引用的时候,往往要通过让其中一端使用 weak 来解决,比如: delegate 代理属性自身已经对它进行一次强引用,没有必要再强引用一次,此时也会使用 weak,自定义 IBOutlet 控件属性一般也使用 weak;当然,也可以使用strong。在
1 谈谈对Block 的理解?并写出一个使用Block执行UIVew动画?答案:Block是可以获取其他函数局部变量的匿名函数,其不但方便开发,并且可以大幅提高应用的执行效率(多核心CPU可直接处理Block指令)[cpp]view plaincopyprint?[UIViewtransitionW...
原创
2022-05-14 19:56:05
211阅读
说到循环引用问题,想必大家都碰到过吧,比如在使用Block的时候,使用__weakSelf来代替self解决等,但是对于这个,还是有不少可以探索的点,下面我就来说下,希望对大家有所帮助。是否所有的Block中,使用self都会导致循环引用?答案是否定的!如下面所示的这种情况如上,使用系统自带的UIView的Block,控制器可以被销毁,说明并没有发生循环引用。原因:UIView调用的是类方法,当前
转载
2023-09-01 19:00:51
82阅读
一:RunLoop的应用 #import "ViewController.h"
@interface ViewController ()
/** 注释 */
@property (nonatomic, strong) NSThread *thread;
@end
@implementation ViewController
/**
* 1:用NSThread创建线程的时候,不要忘
这段时间一直忙着开发,好久没来博客了,人气稀少了不少,准备持续更新一个专题,主要谈谈OC底层的一些实现机制,并会对一些经典的面试题进行分析,感兴趣的可以持续关注,第一讲的主题是: BLock的实现和运用 我们一起来看看,经Clang编译后的block结构如下:1 struct Block_literal_1 {
2 void *isa;
开篇iOS面试中,runLoop,runtime,内存管理,性能优化等更底层更的问题越来越受面试官的青睐,这确实是考察一个程序员知识深度和自主钻研能力的基本手段。虽然大多数程序员在开发过程中,这些知识点用的并不多,但是掌握这些知识,会帮助你写出更优秀的代码,避免一些“莫名其妙”的坑。想成为一名真正优秀的工程师,确实应该在相应的领域不断深挖,才能到达大多数到不了的高度。 此篇讲讲面试中runLoo
转载
2023-09-08 10:40:02
42阅读
一、block的概念:(1),block是一个数据类型,跟int double float一样都是数据类型.所以我们是可以创建一个block类型的变量. (2).block类型的变量中专门存储一段代码,这段代码可以有参数,可以有返回值.存储的代码段必须要指定代码是否有参数,是否有返回值.一旦指定,这个block就只能存储这样类型的代码,二、block变量的声明初始化:(1).声明语法格式:返回值类
转载
2023-07-05 19:54:45
112阅读
iOS进阶面试题----Block部分1 什么是block对于闭包(block),闭包就是能够读取其它函数内部变量的函数。 比如接到电话,百度查询后,返回网页内容给A,这就是一个Block,在M交待工作时,已经定义好,并且取得了F1的任务号(局部变量),却是在当A遇到问题时,才调用执行,跨函数在项目经理M查询百度,获得结果后回调该block。2 block 实现原理Objecti
原创
2022-04-12 13:36:59
454阅读
block和GCD是ios高级程序员面试必问的问题,本篇先介绍下block 第一部分:概述 Block是一个C级别的语法以及运行时的一个特性,和标准C中的函数(函数指针)类似,但是其运行需要编译器和运行时支持,从ios4.0开始就很好的支持Block,个人感觉使用block最大的便利就是简化的回调过程,以前使用uiview的动画,进程要控制动画结束后进行相应的处理,
转载
2024-08-28 08:08:01
60阅读
block这一篇我们来研究一下objc的block并回答一下面试中的下列问题:1.block的内部实现,结构体是什么样的 2.block是类吗,有哪些类型 3.一个int变量被 __block 修饰与否的区别?block的变量截获 4.block在修改NSMutableArray,需不需要添加__block 5.怎么进行内存管理的 6.block可以用strong修饰吗 7.解
转载
2024-07-31 22:13:34
86阅读
How To Use Blocks in iOS 5 Tutorial – Part 1How To Use Blocks in iOS 5 Tutorial – Part 2本人将示范项目放在了资源里,如有需要可以下载下来: 如何在 iOS 5 中使用 Block (1) 这篇文章还可以在这里找到 英语
Tweet
这篇文章来自 iOS 教程团队成员 A
一、block基本使用 声明:返回值(^block变量名)(参数) 定义 :三种形式 二、block保存一段代码 在某处在block内声明一段代码,在另一处调用三、block传值 正向传值:被传值者声明属性来接收值 逆向传值:代理方法,委托方内声明协
转载
2023-07-05 22:39:25
114阅读
本系列博文总结自《Pro Multithreading and Memory Management for iOS and OS X with ARC》 如果您觉得我的博客对您有帮助,请通过关注我的新浪微博 MicroCai 支持我,谢谢! block 顾名思义就是代码块,将同一逻辑的代码放在一个块,使代码更简洁紧凑,易于阅读,而且它比函数使用更方便,代码更美观,
转载
2023-08-01 11:33:49
72阅读
什么是blockblock 是iOS在4.0之后新增的程式语法,严格来说block的概念并不算是基础程式设计的范围,对初学者来说也不是很容易了解,但是在iOS SDK 4.0之后,block几乎出现在所有新版的API之中,换句话说,如果不了解block这个概念就无法使用SDK 4.0版本以后的新功能,因此虽然block本身的语法有点难度,但为了使用iOS的新功能我们还是得硬着头皮去了解这个新的程式
转载
2023-07-04 13:23:46
109阅读
Block是带有自动变量的匿名函数,是C语言的一个扩充功能。Block本质上也是一个OC对象,内部也有一个isa指针,其内部封装了函数调用以及函数调用环境。(一)Block的基本使用1. block声明//返回值(^block变量名)(参数)
void(^block)();2. block定义//三种方式 = ^(参数){};
// 第一种:没返回值,没参数
void(^block
转载
2023-10-03 22:24:38
401阅读
Block 是iOS在4.0之后新增的程式语法。block在现实的开发过程中用到的频率很是频繁,在多线程、异步任务,集合遍历,集合排序、动画都有用到block。block的基本语法如图所示:block的使用在很多的地方与函数相似,有返回值,名称,参数。同时也是封装了代码,block的一个特点就是拥有一个(^)。返回类型(^block的名称)(参数) = ^(参数){ };构成一个完整的
转载
2023-05-23 20:14:12
69阅读
Block 这个东西比较难懂,如果没学过其他有类似功能的语言还真搞不明白。OK,先来介绍一下它是什么东西吧!Block 是iOS在4.0之后新增的程式语法,严格来说block的概念并不算是基础程式设计的范围,对初学者来说也不是很容易了解,但是在iOS SDK 4.0之后,block几乎出现在所有新版的API之中,换句话说,如果不了解block这个概念就无法使用SDK 4.0版本以后的新功能,我靠!
转载
2023-07-05 23:07:41
75阅读
iOS之Block详解:Block详解ViewController.h(ARC)#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
// 属性声明的block都是全局的__NSGlobalBlock__
@property (nonatomic, copy) void (^copyBlock)
转载
2023-07-05 21:59:00
85阅读
一、什么是BlockBlock是将函数及其执行上下文封装的对象。__block_impl结构体内部中有isa,说明Block本质是OC对象。二、Block变量截获局部变量(对象)截获是值截获。比如:NSInteger num = 1;
NSInteger(^block)(NSInteger) = ^NSInteger(NSInteger n) {
return n *
转载
2023-07-04 13:32:11
81阅读