__weak typeof(self) weakSelf = self的应用typeof(xxx)是用来确定括号中内容的类型,如int a = 10;可以这样写typeof(100) a = 10;这两种写法是等价的。那么回到上边,__weak typeof(self) weakSelf 可以用其它代码代替。假如self为PersonViewController,那么__weak PersonVi
转载
2024-09-09 09:55:16
38阅读
今天研究了一下iOS block的传值。场景:视图A跳转到视图B,当由B视图跳回视图A时,返回一些视图A需要的数据。block使用时一般是在视图A中调用视图B中的一个方法,该方法的参数中包含block。所以在视图B的.h文件中定义一个带有block参数的方法。(第一步)- (void)callMyBlock:(TestBlock)block;//先不要管TestBlock是什么鬼,反正是一个参数的
转载
2023-09-06 14:32:11
32阅读
# iOS 中修改 Block 里值的实现
在 iOS 开发中,Block(闭包)是一种非常重要的编程机制,它能够让我们实现回调、异步操作以及业务逻辑的封装。但对于刚入行的小白来说,如何在 Block 中修改一个变量的值,或许会感到困惑。本文将详细介绍这个过程,并通过代码示例帮助你理解。
## 整体流程
在开始之前,我们先列出整个实现的步骤。下表将清晰地展示出我们需要完成的每一个步骤:
|
原创
2024-08-20 10:17:30
34阅读
前言今天研究了一下iOS开发中的block,有些心得,故写下来。默认读者会是有 iOS开发经验的,故相关内容不再科普。1.block入门老子说:学习编程,从翻译开始。block的翻译是什么?是代码块。代码块是个什么鬼?block就是一块可以使用的代码,在定义和声明上和变量类似,在使用上和函数类似。下面上demo,首先是全局的代码块:void (^foo)(void) = ^(void){
转载
2023-07-04 13:32:01
134阅读
__block int a = 0;
void (^foo)(void) = ^{
a = 1;
}; Block不允许修改外部变量的值。Apple这样设计,应该是考虑到了block的特殊性,block也属于“函数”的范畴,变量进入block,实际就是已经改变了作用域。在几个作用域之间进行切换时,如果不加上这样的限制,变量的可维护性将大大
转载
2023-09-19 21:37:41
70阅读
## 如何在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作为一个对象的属性,我们会使用关
转载
2024-08-22 16:37:12
52阅读
常用Block,写一个文章来避免自己犯错 ,之后会不断补充Block的使用方式1.什么是BlockBlock是一种多个文件之间的数据交互方式 是Objective-C特有的一种数据类型 它可以保存一段代码,在合适的时候取出来调用常见格式//不带参数,不带名称
^{
}
//带名称
void (^someBlock)() = ^{
}
//带参数带返回值
int (^addBlock)(
转载
2023-08-09 20:07:41
90阅读
上面第一部分说明了block的使用当你明白了block这个玩意的时候,你会不会有疑问?** 其实我们平常要做到的东西用正常代码就能做到,为什么还要用代码块?它可不简单啊! **如果你没有这样的疑问,那么,能证明两点1、你完全明白Block的用途,你知道在什么情况下会去用它(那你还看我这个干嘛!)2、你根本就不明白Block这个东西,那你需要: iOS 之 Block 的使用 (一) 看看
转载
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修改iOS中的Static变量
在iOS开发中,有时候我们会需要使用Block来对static变量进行修改。Static变量在整个程序的生命周期内都保持其状态,因此它们尤其适用于需要跨函数访问的场景。本文将详细介绍如何在iOS中使用Block来修改Static变量的过程。
### 整体流程
我们可以将整个操作流程分为以下几个步骤(见下表):
| 步骤 | 描述
## iOS 在 Block 中修改属性的实现教程
在iOS开发中,Block是一种非常重要的编程构造,可以用来处理异步操作、事件回调以及其他一些需要延迟执行的任务。当我们需要在Block中修改某个对象的属性时,尤其需要小心,以确保不会造成意外的引用循环或其他潜在问题。接下来,我们将逐步学习如何在Block中安全地修改对象的属性。
### 流程概览
以下是实现“在Block中修改属性”的基本