开篇iOS面试中,runLoop,runtime,内存管理,性能优化等更底层更的问题越来越受面试官的青睐,这确实是考察一个程序员知识深度和自主钻研能力的基本手段。虽然大多数程序员在开发过程中,这些知识点用的并不多,但是掌握这些知识,会帮助你写出更优秀的代码,避免一些“莫名其妙”的坑。想成为一名真正优秀的工程师,确实应该在相应的领域不断深挖,才能到达大多数到不了的高度。 此篇讲讲面试中runLoo
转载
2023-09-08 10:40:02
42阅读
在许多公司的技术面试中,面试官通常会提出一些“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阅读
最近有个朋友问我iOS中的block 是怎么用的,我根据自己的所学把实际应用的一些写法告诉他了因为我觉得这个主要是更注重实用性,好了废话不多说,直接上实际的------实际上使用 通常是进行 block 传值,A 页面--> B页面 如果是正向的话,那么我们把B页面的值传给A就叫做 反向传值(或者叫做回调)。步骤:1. 谁发送消息,谁就写block(同代理的使用)#import
转载
2024-02-05 03:47:05
48阅读
一:RunLoop的应用 #import "ViewController.h"
@interface ViewController ()
/** 注释 */
@property (nonatomic, strong) NSThread *thread;
@end
@implementation ViewController
/**
* 1:用NSThread创建线程的时候,不要忘
block的类型block有三种类型:堆block,栈block,全局block。 对于这三种类型的block遵循俩个原则: block如果没有使⽤外部变量,或者只使⽤静态变量和全局变量,那⼀定是全局blcok。 block如果使⽤了外部变量,⽽且不是静态变量或全局变量,如果赋值给强引⽤的是堆block, 如果赋值给弱引⽤的是栈blcok。为什么block要⽤copy关键字修饰因为block在创建
转载
2023-07-04 13:04:25
79阅读
本文作者主要参考Kazuki Sakamoto,Tomohiko Furumoto著,黎华译的《Objective-C高级编程:iOS与OS X多线程和内存管理》一书。在平时工作中遇到不少关于Block的相关困惑,比如:Block的循环引用问题。于是在反复阅读了该书籍后,决定总结一篇关于Block的相关文章。如果还想深入了解Block,作者建议直接阅读上述书籍。由于作者水平有限,文章难免存在纰漏,
转载
2023-07-04 13:04:16
97阅读
Delegate (协议也就是protocol):
1. 声明Delegate: (通常写在一个.h文件中,这样容易import)
@protocol xxxDelegate <ParentClass>
@optional - (return_type) methodName:(certain_type) args; /
这段时间一直忙着开发,好久没来博客了,人气稀少了不少,准备持续更新一个专题,主要谈谈OC底层的一些实现机制,并会对一些经典的面试题进行分析,感兴趣的可以持续关注,第一讲的主题是: BLock的实现和运用 我们一起来看看,经Clang编译后的block结构如下:1 struct Block_literal_1 {
2 void *isa;
block是对象,它封装了一段代码,这段代码可以在任何时候执行。block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值。它和传统的函数指针很类似,但是有区别:block是inline的,并且它对局部变量是只读的。 Block的定义: int (^myBlock) (int a,int b) = ^(int a,int b){
return a+b;
转载
2023-09-19 21:37:30
62阅读
简介 该篇文章主要回顾--TCP/IP协议族中的TCP/UDP、HTTP;还有Socket。(--该文很干,酝酿了许久!你能耐心看完吗?O_o) 我在这个文章中,列举了常见的TCP/IP族中的协议,今天主角是--传输层协议。 传输层(Transport Layer)是OSI(七层模型)中最重要、最关键的一层,它负责总体的数据传输和数据控制的一层,传输层提供端到端(应用会在网卡注册一个端口号)的交
转载
2024-05-27 22:08:28
32阅读
CAD设计过程中如果可以熟练运用CAD图块功能,便能够有效提升绘图效率。那么,CAD图块怎么创建呢?接下来的CAD制图初学入门技巧,和小编一起来看看浩辰CAD软件中创建及修改CAD图块的具体操作步骤吧!浩辰CAD软件中创建块命令是:BLOCK,快捷键:B。 CAD图块创建步骤:1、启动浩辰CAD,输入创建块命令快捷键:B,点击回车确认。2、此时会跳出【块定义】对话框,在其中设置CAD图块
转载
2023-07-23 23:03:37
89阅读
作为存储业务的一个重要组成部分,block IO是非易失存储的唯一路径,它的生命历程每个阶段都直接关乎我们手机的性能、功耗、甚至寿命。本文试图通过block IO的产生、调度、下发、返回的4个阶段,阐述一个block IO的生命历程。一、什么是块设备和块设备层从计算机诞生开始,就有了IO设备,IO设备大致分为两类,块设备和字符设备,块设备的2个重要特性就是:块存储和可寻址。而块设备层,就是通过组织
转载
2024-01-22 21:50:11
87阅读
一、block的概念:(1),block是一个数据类型,跟int double float一样都是数据类型.所以我们是可以创建一个block类型的变量. (2).block类型的变量中专门存储一段代码,这段代码可以有参数,可以有返回值.存储的代码段必须要指定代码是否有参数,是否有返回值.一旦指定,这个block就只能存储这样类型的代码,二、block变量的声明初始化:(1).声明语法格式:返回值类
转载
2023-07-05 19:54:45
112阅读
1.怎么用 copy 关键字?2.runtime 如何实现 weak 属性答案:1.copy关键字用途:NSString、NSArray、NSDictionary 等等经常使用copy关键字,是因为他们有对应的可变类型:NSMutableString、NSMutableArray、NSMutableDictionary;block 也经常使用 copy 关键字,具体原因见官方文档:Objects
转载
2023-12-29 14:02:16
33阅读
(1)block- (void)viewDidLoad {
[super viewDidLoad];
__block int a=10;
NSLog(@"a=%d",a);
void (^blockName)()=^{
a=20;
};
NSLog(@"a=%d",a);
blockName();
NSLog(@"a=
转载
2023-09-27 16:52:51
73阅读
# 深入理解iOS中的Block
在iOS开发中,Block是一种闭包的实现,可以捕获并包含其上下文中的变量和常量。它们可以作为参数传递给函数或方法,也可以在函数或方法内部定义。在本文中,我们将重点介绍Block作为函数参数时的使用。
## Block入参是函数
在iOS开发中,我们经常会看到一种使用Block作为函数参数的情况。这种设计模式可以使我们更加灵活地处理异步任务或回调函数。下面我
原创
2024-06-24 07:06:46
34阅读
在上一篇–select函数,学习总结了一下select方法的特性,但也提到了select函数的一个缺点:文件描述符的个数是有限的。在linux系统中,默认最大值为1024。poll函数作为另一种I/O复用技术,突破了文件描述符个数的限制。一、poll函数介绍相比于select,poll函数和内核交互的数据结构也有所改变。其函数原型如下:int poll(struct pollfd *fds, un