Delegate (协议也就是protocol): 1. 声明Delegate: (通常写在一个.h文件中,这样容易import) @protocol xxxDelegate <ParentClass> @optional - (return_type) methodName:(certain_type) args; /
文章目录概述Block声明、赋值实现、调用定义Block类型ARC模式下简单应用Block 和 变量Block访问局部变量问题Block访问全局变量、静态变量问题ARC下内存管理补充总结 概述上图就是一个block简单使用,它包括了block声明、赋值实现、调用 三个部分,其中,实现部分可以看作一种匿名函数;跟函数一样,block也是需要调用才能执行内部代码;赋值行为又让block
## 如何实现“iOS block” ### 一、问题描述 在iOS开发中,我们经常会使用block来处理异步任务或者回调函数。block一个匿名函数,可以作为参数传递给其他函数或者方法。 有时候,我们需要判断一个block是否为,以避免在调用block之前出现崩溃情况。本文将介绍如何判断iOSblock是否为,并给出相应代码示例。 ### 二、实现步骤 下面实现“i
原创 2023-10-25 14:56:06
55阅读
本文作者主要参考Kazuki Sakamoto,Tomohiko Furumoto著,黎华译《Objective-C高级编程:iOS与OS X多线程和内存管理》一书。在平时工作中遇到不少关于Block相关困惑,比如:Block循环引用问题。于是在反复阅读了该书籍后,决定总结一篇关于Block相关文章。如果还想深入了解Block,作者建议直接阅读上述书籍。由于作者水平有限,文章难免存在纰漏,
前言很多人在面试时候都会被问到Block,那么Block分为哪几种类型呢? 其实Block共有6种类型,其中三种常用级别,分别是:_NSConcreteGlobalBlock _NSConcreteStackBlock _NSConcreteMallocBlock,三种系统级别 ,分别是_NSConcreteAutoBlock _NSConcreteFinalizingBlock _NSConc
## 实现“iOS Block 地址为方法 作为一名经验丰富开发者,我将会教你如何实现“iOS Block 地址为”。在这个过程中,我将会为你详细解释每一个步骤,并给出相应代码示例。 ### 流程图 ```mermaid journey title 实现“iOS Block 地址为方法 section 开始 开发者准备 小白准
原创 2024-02-25 06:25:32
40阅读
前言先说明一下,因为ARC下系统会对block做一些拷贝和释放操作,对深入于理解block无益,所以本篇文章所提到栗子编译环境均为MRC。首先引用《Objective-C高级编程》Blocks章节中第一句话:Blocks对C语言扩充功能。而且OC建立在C语言基础上之上,添加了面向对象机制一门编程语言。所以不要再说block实现原理C++函数指针了,正确答案block实现原理
在上一篇–select函数,学习总结了一下select方法特性,但也提到了select函数一个缺点:文件描述符个数有限。在linux系统中,默认最大值为1024。poll函数作为另一种I/O复用技术,突破了文件描述符个数限制。一、poll函数介绍相比于select,poll函数和内核交互数据结构也有所改变。其函数原型如下:int poll(struct pollfd *fds, un
# 判断iOSblock是否为iOS开发中,我们经常会用到block作为回调函数,但有时候我们需要判断一个block是否为,以避免出现指针异常。本文将介绍如何判断iOSblock是否为,并给出相应代码示例。 ## 判断block方法 在iOS中,我们可以使用`!`操作符来判断一个block是否为。当一个block时,它值为`nil`,因此我们可以通过判断b
原创 2024-03-04 05:05:10
37阅读
block存储区域首先我们得明白iOS系统存储有哪几大内存区域:1、栈区    由编译器自动分配并释放,存放函数参数值(实参),局部变量等。栈向低地址扩展数据结构,不连续内存区域,采用后进先出(LIFO )。优点快速高效,缺点时有限制,数据不灵活。2、堆区    由程序员分配和释放,如果程序员不释放,程序结束时,可能会由操作系
看了一篇大神总结文章, 归纳出以下几点:      Apple声明方法时有很好命名习惯(这也是我们精通iOS开发一项必备技能)。例如:一个以NSString为参数方法,方法selector就会有String字眼,像initWithString;dateFromString;StartSpeaingString。当Apple方法使用blo
转载 2023-10-09 15:37:45
61阅读
规则,可以帮助在我们在自己代码中做相同选择。 要找出Apple使用delegate场景很简单,我们只要搜索官方文档中“delegate”,就会获取到很多使用delegation类。 但是搜索Apple中有关使用blocks文档就有点困难了,因为我们不能直接搜索文档中“^” 。然而,Apple声明方法时有很好命名习惯(这也是我们精通iOS开发一项必备技能)。例如:一个以NSStrin
转载 2023-11-18 18:28:09
62阅读
block类型block有三种类型:堆block,栈block,全局block。 对于这三种类型block遵循俩个原则: block如果没有使⽤外部变量,或者只使⽤静态变量和全局变量,那⼀定是全局blcok。 block如果使⽤了外部变量,⽽且不是静态变量或全局变量,如果赋值给强引⽤block, 如果赋值给弱引⽤栈blcok。为什么block要⽤copy关键字修饰因为block在创建
## 实现“ios block方法参数可以为”教程 ### 流程图 ```mermaid flowchart TD A(定义block方法) --> B(参数为空处理) B --> C(调用block方法) ``` ### 表格 | 步骤 | 操作 | | --- | --- | | 1 | 定义带有block参数方法 | | 2 | 处理block参数为情况 |
原创 2024-03-22 06:24:43
118阅读
一、block基本语法与使用概述 Block苹果在iOS4开始引入对C语言扩展,用来实现匿名函数特性,Block一种特殊数据类型,其可以正常定义变量、作为参数、作为返回值,特殊地,Block还可以保存一段代码,在需要时候调用,目前Block已经广泛应用于iOS开发中,常用于GCD、动画、排序及各类回调。block申明,跟C语言中函数申明类似void (^blockName) (
1.block结构先看源码://用于描述块对象>标志 flags enum { BLOCK_DEALLOCATING = (0x0001), // runtime BLOCK_REFCOUNT_MASK = (0xfffe), // runtime BLOCK_NEEDS_FREE = (1 << 24), // ru
block对象,它封装了一段代码,这段代码可以在任何时候执行。block可以作为函数参数或者函数返回值,而其本身又可以带输入参数或返回值。它和传统函数指针很类似,但是有区别:blockinline,并且它对局部变量只读Block定义: int (^myBlock) (int a,int b) = ^(int a,int b){ return a+b;
概述代码块Block苹果在iOS4开始引入对C语言扩展,用来实现匿名函数特性,Block一种特殊数据类型,其可以正常定义变量、作为参数、作为返回值,特殊地,Block还可以保存一段代码,在需要时候调用,目前Block已经广泛应用于iOS开发中,常用于GCD、动画、排序及各类回调block 会在编译过程中,会被当做结构体进行处理。 其结构Block-ABI-Apple大概这样:st
转载 2023-09-19 21:41:51
91阅读
今天整理了一下关于block问题总结,block 说白了就是代码块,在Swift里面叫作闭包,block 只是 Objective-C 对闭包实现,并不是 iOS 独有的概念,在 C++、Java 等语言也有实现闭包,名称不同而已,将同一逻辑代码放在一个块,使代码更简洁紧凑,广受开发者欢迎。但同时 block 也是 iOS比较难理解地方,因此有必要了解下 block 实现原理,知其然,更
转载 2023-09-19 21:37:15
50阅读
欢迎回到 在 iOS 5 中使用 Block 系列教程 – 我们已经有了一些 Storyboard/Interface Builder 方面的实践! 在这个教程第一部分,我们用 iOS 5 中 Storyboard 创建视图并且建立了一个很好看界面, 和你在右边看到那张截图差不多。 在这第二部分也是这个系列最后一部分中,我们要使用 Block了! 我们将会讨论 Block 究竟是什
  • 1
  • 2
  • 3
  • 4
  • 5