__weak typeof(self) weakSelf = self应用typeof(xxx)是用来确定括号内容类型,如int a = 10;可以这样写typeof(100) a = 10;这两种写法是等价。那么回到上边,__weak typeof(self) weakSelf 可以用其它代码代替。假如self为PersonViewController,那么__weak PersonVi
今天研究了一下iOS block。场景:视图A跳转到视图B,当由B视图跳回视图A时,返回一些视图A需要数据。block使用时一般是在视图A调用视图B一个方法,该方法参数包含block。所以在视图B.h文件定义一个带有block参数方法。(第一步)- (void)callMyBlock:(TestBlock)block;//先不要管TestBlock是什么鬼,反正是一个参数
# iOS 修改 Block实现 在 iOS 开发Block(闭包)是一种非常重要编程机制,它能够让我们实现回调、异步操作以及业务逻辑封装。但对于刚入行小白来说,如何在 Block 修改一个变量,或许会感到困惑。本文将详细介绍这个过程,并通过代码示例帮助你理解。 ## 整体流程 在开始之前,我们先列出整个实现步骤。下表将清晰地展示出我们需要完成每一个步骤: |
原创 2024-08-20 10:17:30
34阅读
前言今天研究了一下iOS开发block,有些心得,故写下来。默认读者会是有 iOS开发经验,故相关内容不再科普。1.block入门老子说:学习编程,从翻译开始。block翻译是什么?是代码块。代码块是个什么鬼?block就是一块可以使用代码,在定义和声明上和变量类似,在使用上和函数类似。下面上demo,首先是全局代码块:void (^foo)(void) = ^(void){
__block int a = 0; void (^foo)(void) = ^{ a = 1; };        Block不允许修改外部变量。Apple这样设计,应该是考虑到了block特殊性,block也属于“函数”范畴,变量进入block,实际就是已经改变了作用域。在几个作用域之间进行切换时,如果不加上这样限制,变量可维护性将大大
## 如何在iOS中使用__block修改Block局部变量 在iOS开发,我们经常会使用Block来处理异步操作或者回调函数。Block是一种闭包,可以捕获其定义时上下文环境,包括局部变量。但是,Block默认是不允许修改局部变量,这就需要使用__block修饰符来实现。 本文将向你介绍如何使用__block修饰符来修改Block局部变量。首先,我们来看一下整个过程流程图。
原创 2024-01-10 03:54:21
86阅读
# iOS Block 修改对象使用技巧 在 iOS 开发Block 是一种强大且灵活工具,我们经常用它来实现异步操作、回调等。然而,在使用 Block 过程,特别是在修改对象状态时,我们需要格外小心,因为它可能涉及到内存管理和多线程安全等问题。 ## 基本概念 Block 是一块可以在程序中封装代码,通常作为参数传递给方法。这种封装代码可以访问其外部变量以及对象属性
原创 2024-09-16 04:50:56
28阅读
Block好处,我总结了下主要有2点:1.用于回调特别方便,2.可以延长对象作用区域。但是,Block内存管理这个模块一直不是很清楚,这个周末好好看了下Block原理,有些许心得。为了性能,默认Block都是分配在stack上面的,所以它作用区域就是当前函数。#include <stdio.h> int main() { int i = 1024; voi
转载 2023-07-06 11:56:23
56阅读
iOS Block本质(一)1.对block有一个基本认识block本质上也是一个oc对象,他内部也有一个isa指针。block是封装了函数调用以及函数调用环境OC对象。2.探寻block本质首先写一个简单blockint main(int argc, const char * argv[]) { @autoreleasepool { int age = 10;
block本质上也是一个OC对象,它内部也有一个isa指针block是封装了函数调用以及函数调用环境OC对象结构示意图变量捕获示意图为了保证block内部能够正常访问外部变量,block有变量捕获机制示例代码============================== 原始代码 ============================== @interface TBPerson : NSOb
转载 2024-06-26 10:18:35
30阅读
背景介绍在iOS开发过程,我们经常会用到block这个对象,它可以作为函数回调、类属性等出现在我们项目中,作为回调,block相对于代理方法,代码量更少,使用起来更方便,还可以使用与block定义同一作用范围变量。当然,block使用会让代码逻辑不如使用代理清晰,萝卜青菜,各有所爱。下面我就对于block可以使用与它在同一作用范围变量这一特性展开说一下自己理解。正文先看这样一段代
转载 2023-10-05 20:24:12
122阅读
简介 我们可以把Block当做Objective-C匿名函数。Block允许开发者在两个对象之间将任意语句当做数据进行传递,往往这要比引用定义在别处函数直观。另外,block实现具有封闭性(closure),而又能够很容易获取上下文相关状态信息。block是代码块,其本质和变量类似。不同是代码块存储数据是一个函数体。使用Block,就可以像其他标准函数一样,传入参数,并得到返
转载 2023-07-05 22:35:24
130阅读
Block 是一个里面存储了指向定义 block代码块函数指针,以及block外部上下文变量信息结构体。简单来说就是:带有自动变量匿名函数。本篇文章不会阐述 Block 使用语法,有需要了解 Block 语法可以查看文末参考链接。本文主要通过学习 Block 源代码来了解 Block 实现原理、内存相关知识、以及如何截获外部变量,然后再通过一些常见 Block 面试题,进一步加
转载 2023-07-05 22:39:13
75阅读
block代码块主要用于对象之间通信(反向传和方法传递)。首先,我们从内存管理方面来了解一下block  block:我们称代码块,他类似一个方法。而每一个方法都是在被调用时候从硬盘到内存,然后去执行,执行完就消失,所以,方法内存不需要我们管理,也就是说,方法是在内存栈区。所以,block不像OC类对象(在堆区),他也是在栈区。如果我们使用block作为一个对象属性,我们会使用关
常用Block,写一个文章来避免自己犯错 ,之后会不断补充Block使用方式1.什么是BlockBlock是一种多个文件之间数据交互方式 是Objective-C特有的一种数据类型 它可以保存一段代码,在合适时候取出来调用常见格式//不带参数,不带名称 ^{ } //带名称 void (^someBlock)() = ^{ } //带参数带返回 int (^addBlock)(
转载 2023-08-09 20:07:41
90阅读
上面第一部分说明了block使用当你明白了block这个玩意时候,你会不会有疑问?** 其实我们平常要做到东西用正常代码就能做到,为什么还要用代码块?它可不简单啊! **如果你没有这样疑问,那么,能证明两点1、你完全明白Block用途,你知道在什么情况下会去用它(那你还看我这个干嘛!)2、你根本就不明白Block这个东西,那你需要: iOSBlock 使用 (一) 看看
转载 2023-08-21 15:31:44
53阅读
作者:Liwjing先来简单介绍一下BlockBlock是什么?苹果推荐类型,效率高,在运行中保存代码。用来封装和保存代码,有点像函数,Block可以在任何时候执行。Block和函数相似性:(1)可以保存代码(2)有返回(3)有形参(4)调用方式一样。Block 底层实现定义一个简单block我们再给a赋值为20,此时打印出来a 还是10但当我们在第一次给a 赋值时,前面加上__blo
转载 2023-07-06 13:35:47
93阅读
       毕业将近半年了,从事iOS开发也一年多了,入了iOS这个行列,算是一个明智之举吧,iOS开发带给我了很多欢乐,当然了,也给了我物质上很大满足,今天我来给说一下自己对delegate和block理解,说不对地方,希望大家指正。     delegate和block我感觉是一样,但是block比delegat
转载 2024-08-15 11:42:44
23阅读
## 如何使用Block修改iOSStatic变量 在iOS开发,有时候我们会需要使用Block来对static变量进行修改。Static变量在整个程序生命周期内都保持其状态,因此它们尤其适用于需要跨函数访问场景。本文将详细介绍如何在iOS中使用Block修改Static变量过程。 ### 整体流程 我们可以将整个操作流程分为以下几个步骤(见下表): | 步骤 | 描述
原创 10月前
11阅读
## iOSBlock 修改属性实现教程 在iOS开发Block是一种非常重要编程构造,可以用来处理异步操作、事件回调以及其他一些需要延迟执行任务。当我们需要在Block修改某个对象属性时,尤其需要小心,以确保不会造成意外引用循环或其他潜在问题。接下来,我们将逐步学习如何在Block安全地修改对象属性。 ### 流程概览 以下是实现“在Block修改属性”基本
原创 9月前
42阅读
  • 1
  • 2
  • 3
  • 4
  • 5