什么是Block?Block是ios中一种比较特殊的数据类型,是苹果官方特别推荐使用的一种数据类型,应用场景有:动画、多线程、集合遍历、网络请求回调等Block的作用:用来保存某一段代码,可以在恰当的时间取出来再调用。Block的基本使用: //
//  main.m
//  Block的基本使用
//
//  Created by XinYou on 15-5-8.
//  Copyright            
                
         
            
            
            
            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阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            Block 这个东西比较难懂,如果没学过其他有类似功能的语言还真搞不明白。OK,先来介绍一下它是什么东西吧!Block 是iOS在4.0之后新增的程式语法,严格来说block的概念并不算是基础程式设计的范围,对初学者来说也不是很容易了解,但是在iOS SDK 4.0之后,block几乎出现在所有新版的API之中,换句话说,如果不了解block这个概念就无法使用SDK 4.0版本以后的新功能,我靠!            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-05 23:07:41
                            
                                75阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一.Block的基本使用1.Block的声明: 返回值类型(^block名称)(参数)    例如:声明一个无参数无返回值的block:  // 声明:返回值类型(^block变量名)(参数) void(^block)();  2.Block的定义:方式一:void(^block1)() = ^(){   NSLog(@"调用block1"); };  方式二:block如果没有参数,可以省略()            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-19 18:48:41
                            
                                44阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
               到这里我们就不得不说说什么时候使用copy。我的印象中,只有两处使用了copy,即修饰NSString类型与block,其他的都是使用strong关键字修饰。    说到这里,我们先来说说NSString类型,我在创建的NSString类型的属性中,也曾也使用过strong修饰的,因为我几乎没有使用过NSMutableString类型转换,我不用去考虑            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-06 11:52:59
                            
                                109阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            栈区与堆区 block本身是像对象一样可以retain,和release。但是,block在创建的时候,它的内存是分配在栈(stack)上,而不是在堆(heap)上。他本身的作于域是属于创建时候的作用域,一旦在创建时候的作用域外面调用block将导致程序崩溃。使用retain也可以,但是block的            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2018-06-22 18:58:00
                            
                                149阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            最近有个朋友问我iOS中的block 是怎么用的,我根据自己的所学把实际应用的一些写法告诉他了因为我觉得这个主要是更注重实用性,好了废话不多说,直接上实际的------实际上使用 通常是进行  block 传值,A 页面--> B页面 如果是正向的话,那么我们把B页面的值传给A就叫做 反向传值(或者叫做回调)。步骤:1. 谁发送消息,谁就写block(同代理的使用)#import            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-05 03:47:05
                            
                                48阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            本文简介本章不会对Block做过多的实现研究。只是讲解基本的用法。纯粹基础知识。结合实际项目怎么去做举例。Block使用场景,可以在两个界面的传值,也可以对代码封装作为参数的传递等。用过GCD就知道Block的精妙之处。Block简介Block是一种比较特殊的数据类型。它可以保存一段代码,在合适的时候取出来调用。Block的修饰ARC情况下1.如果用copy修饰Block,该Block就会存储在堆            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-05 20:35:48
                            
                                52阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            让我们看下代码://文件test.m
#import <Foundation/Foundation.h>
void test()
{
    //下面分别定义各种类型的变量
     int a = 10;                       //普通变量
    __block int b = 20;                //带__block修饰符的block普通变            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-04 13:29:24
                            
                                55阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            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阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # 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
在            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-10-09 06:40:03
                            
                                72阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # 如何实现iOS开发中的Block修饰
在iOS开发中,Block是一个非常重要的概念,它是一种封装的代码块,可以作为参数传递或作为返回值。Block的修饰可以影响Block的生命周期、内存管理以及在特定情况下的性能。本文将详细介绍Block的修饰机制,并以步骤和代码示例的形式帮助初学者理解如何实现Block修饰。
## 整体流程
下面是实现Block修饰的整体流程表格,我们将逐步进行讲解            
                
         
            
            
            
            1 Block 的定义block 就是以函数以及执行上下文封装起来的对象2  Block 截获对象001 局部变量(基础数据类型)直接获取其值;对象的成员变量连同其所有修饰符一起截获002 静态局部变量 获取的是它的指针形式003 全局变量 不进行截获3.--block 修饰符001 一般情况下被截获的变量进行赋值操作才会生效002 被--block修饰的基础数据会转变成一个栈            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-05-22 15:43:05
                            
                                137阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            背景介绍在iOS开发过程中,我们经常会用到block这个对象,它可以作为函数的回调、类的属性等出现在我们的项目中,作为回调,block相对于代理方法,代码量更少,使用起来更方便,还可以使用与block定义同一作用范围的变量。当然,block的使用会让代码的逻辑不如使用代理清晰,萝卜青菜,各有所爱。下面我就对于block可以使用与它在同一作用范围的变量这一特性展开说一下自己的理解。正文先看这样一段代            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-05 20:24:12
                            
                                122阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            本篇文章的主要内容了解何谓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阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            在基本的开发中遇到 需要弱引用时候 我一般 用 weak  预防 死锁的时候 我会用 block 的确没出过大错  但是这样处理 的确有点囫囵  现在我想好好理解一下这两个修饰符"block中用到的外部变量最好使用 __weak 修饰,避免内存泄露; block容易引起引用循环的根本原因是: 1,对于(block内部用到的)外部变量,对其执行retain 的            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-26 22:48:23
                            
                                76阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            在使用block 时,为避免亲戚循环引用问题,我们一般常将外部变量用 __weak 或者 __block 关键字进行修饰。   
 __block和__weak修饰符的区别: 1.__block不管是ARC还是MRC模式下都可以使用,可以修饰对象,还可以修饰基本数据类型。  2.__weak只能在ARC模式下使用,也只能修饰对象(NSString),不能修饰基本数据类型(in            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-18 08:21:29
                            
                                232阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            想必很多开发人员知道一般用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阅读
                            
                                                                             
                 
                
                                
                    