一.Block的基本使用1.Block的声明: 返回值类型(^block名称)(参数) 例如:声明一个无参数无返回值的block: // 声明:返回值类型(^block变量名)(参数) void(^block)(); 2.Block的定义:方式一:void(^block1)() = ^(){ NSLog(@"调用block1"); }; 方式二:block如果没有参数,可以省略()
转载
2024-02-19 18:48:41
44阅读
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阅读
让我们看下代码://文件test.m
#import <Foundation/Foundation.h>
void test()
{
//下面分别定义各种类型的变量
int a = 10; //普通变量
__block int b = 20; //带__block修饰符的block普通变
转载
2023-07-04 13:29:24
55阅读
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 OC Block 修饰
## 1. 概述
在 iOS 开发中,我们经常会使用 block 这种匿名函数来实现一些回调或者异步操作。然而,有时候我们希望对 block 进行一些修饰,比如修改 block 的参数类型或者返回值类型。这就需要使用到 block 的修饰符。
本文将介绍如何在 iOS Objective-C 中使用 block 修饰符,并详细说明每一步需要做什么。
##
原创
2023-10-29 06:52:31
53阅读
# 如何实现iOS开发中的Block修饰
在iOS开发中,Block是一个非常重要的概念,它是一种封装的代码块,可以作为参数传递或作为返回值。Block的修饰可以影响Block的生命周期、内存管理以及在特定情况下的性能。本文将详细介绍Block的修饰机制,并以步骤和代码示例的形式帮助初学者理解如何实现Block修饰。
## 整体流程
下面是实现Block修饰的整体流程表格,我们将逐步进行讲解
# iOS 之 __block 修饰变量的深度解析
在iOS开发中,使用Block是一种常见的编程模式。Block提供了一种快捷的方式来处理回调、异步操作等场景。然而,当我们在Block内部引用外部变量时,往往会遇到一些问题。这时,`__block`修饰符便应运而生。本文将全面解析`__block`的用途、特性及使用示例,帮助开发者更好地理解和运用这一特性。
## 什么是 __block
在
原创
2024-10-09 06:40:03
72阅读
背景介绍在iOS开发过程中,我们经常会用到block这个对象,它可以作为函数的回调、类的属性等出现在我们的项目中,作为回调,block相对于代理方法,代码量更少,使用起来更方便,还可以使用与block定义同一作用范围的变量。当然,block的使用会让代码的逻辑不如使用代理清晰,萝卜青菜,各有所爱。下面我就对于block可以使用与它在同一作用范围的变量这一特性展开说一下自己的理解。正文先看这样一段代
转载
2023-10-05 20:24:12
122阅读
1 Block 的定义block 就是以函数以及执行上下文封装起来的对象2 Block 截获对象001 局部变量(基础数据类型)直接获取其值;对象的成员变量连同其所有修饰符一起截获002 静态局部变量 获取的是它的指针形式003 全局变量 不进行截获3.--block 修饰符001 一般情况下被截获的变量进行赋值操作才会生效002 被--block修饰的基础数据会转变成一个栈
转载
2023-05-22 15:43:05
137阅读
最近有个朋友问我iOS中的block 是怎么用的,我根据自己的所学把实际应用的一些写法告诉他了因为我觉得这个主要是更注重实用性,好了废话不多说,直接上实际的------实际上使用 通常是进行 block 传值,A 页面--> B页面 如果是正向的话,那么我们把B页面的值传给A就叫做 反向传值(或者叫做回调)。步骤:1. 谁发送消息,谁就写block(同代理的使用)#import
转载
2024-02-05 03:47:05
48阅读
本篇文章的主要内容了解何谓block。了解block的使用方法。Block 是iOS在4.0版本之后新增的程序语法.
在iOS SDK 4.0之后,Block几乎出现在所有新版的API之中,换句话说,如果不了解Block这个概念就无法使用SDK 4.0版本以后的新功能,因此虽然Block本身的语法有点难度,但为了使用iOS的新功能我们还是得硬着头皮去了解这个新的程序概念。一、看一看什么是Blo
转载
2023-12-27 10:22:13
117阅读
在使用block 时,为避免亲戚循环引用问题,我们一般常将外部变量用 __weak 或者 __block 关键字进行修饰。
__block和__weak修饰符的区别: 1.__block不管是ARC还是MRC模式下都可以使用,可以修饰对象,还可以修饰基本数据类型。 2.__weak只能在ARC模式下使用,也只能修饰对象(NSString),不能修饰基本数据类型(in
转载
2023-06-18 08:21:29
232阅读
在基本的开发中遇到 需要弱引用时候 我一般 用 weak 预防 死锁的时候 我会用 block 的确没出过大错 但是这样处理 的确有点囫囵 现在我想好好理解一下这两个修饰符"block中用到的外部变量最好使用 __weak 修饰,避免内存泄露; block容易引起引用循环的根本原因是: 1,对于(block内部用到的)外部变量,对其执行retain 的
转载
2023-07-26 22:48:23
76阅读
什么是Block?Block是ios中一种比较特殊的数据类型,是苹果官方特别推荐使用的一种数据类型,应用场景有:动画、多线程、集合遍历、网络请求回调等Block的作用:用来保存某一段代码,可以在恰当的时间取出来再调用。Block的基本使用: //
// main.m
// Block的基本使用
//
// Created by XinYou on 15-5-8.
// Copyright
想必很多开发人员知道一般用copy修饰block,接下来就讲解为什么需要用copy,甚至会讲到其实用strong修饰block也是可以的在 Objective-C 语言中,一共有 3 种类型的 block:_NSConcreteGlobalBlock 全局的静态 block,没有访问外部局部变量(基本数据、OC对象)、成员属性变量或只用到全局变量、静态变量(局部或者全局静态变量)。_NSConcr
转载
2023-07-06 11:52:07
130阅读
更新:2020-06-08-18:45:14。注意:查看正文前,请先查看文末的评论,以确认是否有勘误。在 《iOS面试题集锦(附答案)》 中有这样一道题目:在block内如何修改block外部变量?(38题)答案如下:38. 在block内如何修改block外部变量?注:本题代码请在仓库中查看以 Demo38 开头的工程(公众号请点击原文查看 GitHub 仓库)先描述下问题:默认情况下,在blo
转载
2023-10-31 17:58:10
40阅读
环境:block函数内
先写结论:
在MRC下,我们通常使用__block,而在ARC下我们通常使用__weak, 或者__unsafe_unretaine __block(不安全,不建议使用) 来修饰对象防止循环引用而造成的内存泄露。
注意:
__weak 本身是可以避免循环引用的问题的,但是其会导致外部对象释放了之后,block 内部也访问不到这个对象的问题,我们可以通过在 block
转载
2023-10-16 18:56:00
6阅读
1我们知道,在使用 block 的时候,为了避免产生循环引用,通常需要使用 weakSelf 与 strongSelf,写下面这样的代码:__weak typeof(self) weakSelf = self;
[self doSomeBlockJob:^{
__strong typeof(weakSelf) strongSelf = weakSelf;
if (strongSel
转载
2024-06-12 17:48:35
142阅读
/*
使用了__weak修饰符的对象,作用等同于定义为weak的property。自然不会导致循环引用问题,因为苹果文档已经说的很清楚,当原对象没有任何强引用的时候,弱引用指针也会被设置为nil;
因此,__block和__weak修饰符的区别其实是挺明显的:
1.__block不管是ARC还是MRC模式下都可以使用,可以修饰对象,还可以修饰基本数据类型。
2.__weak只能在A
转载
2023-10-22 21:01:10
53阅读
只要学过 iOS 的人,都会对 strong、weak、copy等关键字应该都会很熟悉。weak 属性关键字就是弱引用,它不会增加引用计数但却能保证指针的安全访问,在对象释放后置为 nil,从而避免错误的内存访问。主要为了解决循环引用的问题。接下来,我们会从 objc 库中的 NSObject.mm、 objc-weak.h 以及 objc-weak.mm 文件出发,去具体了解 weak 的实现过
转载
2023-08-31 23:10:13
63阅读