关于Block的学习总结(个人总结帖)

之前写过陆陆续续写过一些关于block的东西~但是都是太罗嗦和繁琐,所以今天写一篇总结性的帖子

1.如何声明一个block

block声明有两个形式,这个很重要,比较容易混搅不清

第一个是直接声明block变量

int (^ bBlock)(int a,int b)    bBlock是函数名字,其他的时声明的形式,不懂的网上查

第二个是作为参数去声明   这个和直接声明block变量是不一样的

(void)testF: bool (^)(int a,int b)  bBlock ;      bool (^)(int a,int b)  bBlock是参数block的声明

以上就是两中方式的block声明 不懂的可以留言。也可以发我的邮箱  [email protected]  

这样的话,block就差不多了,但是遗留下了一个非常重要的问题,我也是才发现的 直接摘抄别人的博客,因为他写的很清楚

在block内中,使用self或者类的成员变量,会导致self的引用计数被加1,引起循环引用,导致无法释放当前的self

mMatchHead是我自定义的一个在VC中贴入的view,用了2个block来进行回调。

在withMinuteFinish:这个block中,出现了2个问题,导致循环引用。

第一个就是一眼看见的self,block中直接使用self是不对的。

第二个是,使用了currentScore,这个成员变量,即使不加self.xx,也会导致self引用计数被加1.

所以,解决方法是,

用bself的__block变量来代替。请对比上线两张图。self 和currentScore的改变。

至于这个博文写的第二种方法,我觉得用处不大,就不添加了,可以自己去看

http://hi.baidu.com/apple_xingpppp/item/8debb830970c136a7d034b72

关于Block的学习总结(个人总结帖)

时间: 2024-10-02 20:51:38

关于Block的学习总结(个人总结帖)的相关文章

八.OC基础加强--1.autorelease的用法 2.ARC下内存管理 3.分类(category)4.block的学习

1.autorelease的用法   1.自动释放池及autorelease介绍 (1)在iOS程序运行过程中,会创建无数个池子,这些池子都是以栈结构(先进后出)存在的. (2)当一个对象调用autorelease时,会将这个对象放到位于栈顶的释放池中 . 2.为什么会有autorelease? OC的内存管理机制中比较重要的一条规律是:谁申请,谁释放. 但有些情况下,开发者并不能确定某些对象何时释放.这时候就需要自动释放池. 它的好处是: (1)不需要再关心对象释放的时间 : (2)不需要再关

block的学习的心得

额我主要说它的属性,和在添加cell的事件的时候如果使用block实现点击的事件. block就是一个传值回调的一个过程,它能降低耦合度.block看似和对象没有多大的关系.但是里面的block却执行了关于对象的事件.他的语法那些视频上都有,这里就不多说了. 但是有这个3点.1.在block中引用局部的变量时会变成常量不可以修改 ,要想修改时必须是__block修饰时才可以修改 2.在内存方面还是局部变量会retain,__block修饰时不会retain 且block声明全局变量时,我们应该调

block的学习(block和timer的循环引用问题)

一.什么是回调函数? 回调函数,本质上也是个函数(搁置函数和方法的争议,就当这二者是一回事).由"声明"."实现"."调用"三部分组成. 在上面的例子中,我可以看出,函数amount(其实是Block),的声明和调用在A类中,而实现部分在B类中.也就是说,B类实现了amount函数,但并没有权限调用,最终还是 由A类触发调用.我们称这样的机制为"回调".意思是"虽然函数的实现写在B类中,但是真正的调用还是得由A类来完

关于开始学习Leetcode的第一帖

从明天开始,白天在实验室完成工作,晚上来图书馆换个环境去学习算法数据结构等计算机基础性的技能.在LeetCode这个平台上做题. 现在感觉自己在算法和数据机构这方面实在是太薄弱了,需要慢慢的捡起来来,要不然明年开始找工作就太没有竞争力了!所以要坚持刷Leetcode上的题目,慢慢找到学习算法和数据结构的感觉,只有这样,才不愧是计算机科班出生了.同时还是看看图书馆的漂亮妹子,何乐而不为呢~~~ 娃哈哈哈哈哈~~

重要经验五:block作为属性的注意事项

现代ios应用的开发,不使用GCD和block,效率会降低很多,在今年3月份之前,我在block的学习和使用方面,精力和经验都明显不足,在SF有个牛逼同事,不仅自己积累了一套库,而且对这个库持续进行更新和维护,其架构能力和代码水平都不错,他的代码中使用了大量的GCD,为了适应这些技术,我在coding的过程中,开始有意识的多写GCD的代码,刚开始一切顺利,直到我使用block来作为一个对象的属性,这让我纠结了很久. 我遇到的问题是:1,这种属性block,其他类在使用的时候,应该怎么写? 2,b

block相关归纳

经过今天的Block的学习.上网查询相关文章归纳了一下 一.一个使用Block的好处有: Block可以用在许多不同的环境中,这样可以让代码更加简单,以及减少函数声明的数量,不用实现代理协议. 简单性:使用 Block 我们可以不写任何附加的代码就可以访问对象,对象在数组中的索引,stop 变量. 这意味着少量的代码,减少了发生编码错误的机会(当然,并非我们一定会出现编码错误). 速度:使用 Block 在执行速度上要比使用快速枚举快. 在我们这个例子中,这点微小的速度提升不值得一提,但是在更复

设计模式之-工厂模式

一.工厂方法模式 工厂模式1:普通工厂方法模式 1.常量定义部分 /**  * 常量定义类,所有公用的常量定义均在此类中定义  */ package com.le.global; public class Const { /**  * 定义不同工人类型的常量  */ public static final byte SENDER_MAIL = 1; public static final byte SENDER_SMS = 2; } 2.实例接口定义部分 /**  * 发送者接口定义,所有工人通

MyBatis使用总结+整合Spring

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .2013年11月迁移到Github.iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架. MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBati

[转]WCF 4 安全性和 WIF 简介

转自:http://www.cnblogs.com/WizardWu/archive/2010/10/04/1841793.html 本帖简介 .NET 新一代的 Windows Identity Foundation (WIF) 框架,及其与 WCF 的协同运用.文后提供两本 WCF 4 书籍.一本 WIF 书籍的下载地址,及许多网络上的学习资源. 本帖并非要详述 WIF 的功能细节,事实上重点在文后的 30 多项学习资源,提供网友将来需要学习时作为参考.不然此等新技术,等到它普及不知要多少年