block的学习的心得

额我主要说它的属性,和在添加cell的事件的时候如果使用block实现点击的事件。

block就是一个传值回调的一个过程,它能降低耦合度。block看似和对象没有多大的关系。但是里面的block却执行了关于对象的事件。他的语法那些视频上都有,这里就不多说了。

但是有这个3点。1.在block中引用局部的变量时会变成常量不可以修改 ,要想修改时必须是__block修饰时才可以修改 2.在内存方面还是局部变量会retain,__block修饰时不会retain 且block声明全局变量时,我们应该调用block的copy方法。为什么要引用计数要加一,因为要想调用执行block的代码必须block代码的调用,但是有可能整个代码执行完都没调用对象已经被销毁了如果以后调用的时候就可能没有什么用。3.如果在block中的代码中的对象是不可以销毁的这就造成内存的泄露,一个简单记得方法只要在block中用到对象都都要在外面用和它同一个对象类型用__block修饰。就是这么多。

分享一个我添加cell的事件的时候如果使用block实现点击的事件;

#import <UIKit/UIKit.h>

//传递的是用户点击cell的哪一行

typedef  void (^cellButton)(NSInteger indexPath);

@interface rootTableViewCell : UITableViewCell

//必须吧UITableView的tableView给UITableViewCell对象的属性tableView。这是就可以获得用户点击的cell的第几行。

@property (weak, nonatomic)UITableView *tableView;

@property(nonatomic,copy)cellButton cellblock;

@property (nonatomic) UIButton *myButton;

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier;

@end

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{

    self=[super initWithStyle:style reuseIdentifier:reuseIdentifier];

    if (self){

        _myButton=[[UIButton alloc]init];

        _myButton.frame=CGRectMake(0, 0, 375, 100);

        [_myButton addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];

        

        [self addSubview:_myButton];

        

        

    }

    

    return self;

}

- (void)buttonAction:(id)sender {

//获取行数并且吧这个行数传给cellblock这个block块调用。

    NSIndexPath *indexpath=[[self tableView] indexPathForCell:self];

    if (_cellblock) {

        _cellblock(indexpath.row);

    }

       }

 

-----------------------------------------------------------------

//在定制的UITableViewCell中,如果需要对cell中的控件添加事件响应,就要想办法把cell的indexPath传递给响应函数。下面是一个相对方便且耦合度低的方法。UICollectionView同样适用。在MyUITableViewCell中添加一个指向UITableView的指针,需要获取indexPath时,通过指针向tableView查询。在MyUITableViewCell中添加一个block属性,在实例化MyUITableViewCell时,给block赋值。在MyUITableViewCell的实现中响应MyButton的点击事件,在响应函数中调用block。

  cell.tableView = tableView;

 

        cell.cellblock = ^(NSInteger index){

            if (index==0) {

                mainViewController *mainView=[[mainViewController alloc]init];

                [self.navigationController pushViewController:mainView animated:YES];

                           }

    

        };

 -------------------------------------------------------------------------

写的比较乱额,我还是一个新手,里面有错误的地方还请不吝赐教,

时间: 2024-08-11 07:49:50

block的学习的心得的相关文章

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

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

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

之前写过陆陆续续写过一些关于block的东西~但是都是太罗嗦和繁琐,所以今天写一篇总结性的帖子 1.如何声明一个block block声明有两个形式,这个很重要,比较容易混搅不清 第一个是直接声明block变量 int (^ bBlock)(int a,int b)    bBlock是函数名字,其他的时声明的形式,不懂的网上查 第二个是作为参数去声明   这个和直接声明block变量是不一样的 (void)testF: bool (^)(int a,int b)  bBlock ;      

网页学习的心得和总结

网页学习心得和总结:         在老师一个学期的耐心和细心指导下,我学会了很多关于网页设计与开发的知识,我觉得课程很有趣也很有意义.         在日常生活中,我们不管是查找信息.网上购物.学习课程......都不可避免要接触多不胜数的网站,还记得第一堂课上,老师就让我们对不同类型.不同风格.不同特色的优秀网站的欣赏,使我们对网站制作课程有一个初步了解,那个时候我就对网站制作与设计产生了学习兴趣,同时老师也指导我们学会分析各类网站的总体布局.色彩搭配.内容规划,通过学习我才恍然发现很多

201671010117 2016-2017-2《Java程序设计》第四周学习Java心得

第四周学习心得 通过这周的学习,学习到的内容主要是第四章涉及到的知识点,老师详细讲解了关于整数分离的程序和关于求矩形和圆的周长和面积的程序,对this参数的理解和静态变量还不够深入,还不太会用它,我的程序还是不会写,出错率很高,学的很乱,思路不清晰. 上周的第三次实验作业交的时候很乱,没有按顺序来交,交的太乱,我深刻反思,我已经改好了,但是老师作业还没有退,能不能把作业退回来,我重新交上去,第二次实验作业没有我也改了一下,老师能不能也退回来,我也重新交一下.

php学习分享心得吧

应楼主的要求,在此分享一下本人的心得吧首先,我觉得学习一门新的技术,需要学会观察技术潮流 从根源上来讲,一门技术是否流行,是否能够大规模被人们使用,和人们使用技术的方式密切PHP之所以能够从10年前到现在仍然流行,是因为互联网的发展,也是因为PHP本身相对其他语言来说,它是最专注于Web的. 而现在互联网所宣传的概念就是物联网和大数据,而人们使用技术的方式也不仅仅再局限于PC端,更多的流量从移动端诞生了.而移动端主要两大系统是iOS和安卓,那么相对应的,学习iOS开发和安卓开发的程序员工资相对比

前端框架Vue学习的心得记录(过渡&amp;动画)

目标:深入了解Vue框架(2.x版本)的组件 方法:通过看Vue的官方手册(Vue官方网站) 内容:本博客记录一些学习Vue中的心得,便于日后启发.(过渡&动画)(未完成,待继续) 注:遇到一些不懂的函数等,可以看官网的API参考. 正文; 一.概述 Vue 在插入.更新或者移除 DOM 时,提供多种不同方式的应用过渡效果. 包括以下工具: 在 CSS 过渡和动画中自动应用 class 可以配合使用第三方 CSS 动画库,如 Animate.css 在过渡钩子函数中使用 JavaScript 直

前端框架Vue学习的心得记录(可复用性&amp;组合)

目标:深入了解Vue框架(2.x版本)的可复用性和组合 方法:通过看Vue的官方手册(Vue官方网站) 内容:本博客记录一些学习Vue中的心得,便于日后启发.(可复用性&组合)(未完成,待继续) 注:遇到一些不懂的函数等,可以看官网的API参考. 正文: 一.混入 二.自定义指令 三.渲染函数&JSX 四.插件 五.过滤器 原文地址:https://www.cnblogs.com/xinkuiwu/p/12011219.html

前端框架Vue学习的心得记录(工具)

目标:深入了解Vue框架(2.x版本)的工具 方法:通过看Vue的官方手册(Vue官方网站) 内容:本博客记录一些学习Vue中的心得,便于日后启发.(工具)(未完成,待继续) 注:遇到一些不懂的函数等,可以看官网的API参考. 正文: 一.单文件组件 二.单元测试 原文地址:https://www.cnblogs.com/xinkuiwu/p/12015020.html

学习PHP心得:视频教学&gt;看文档

PHP共同学习分享PHP技术心得 虽然PHP并非目前最火爆的编程语言,但随着信息社会的发展,大量的PHP编程人员近期在剧增,再加上IT行业的崛起,让学习编程的人能得到一个很好的就业机会,这时候我们想要快速地学习这门技术,且能更好的融入这个行业,我们下面应该来学习以下的一些技巧. 学习视频-资料整理 密码:7zxc 其实我们想要成为一名真正的PHP程序员,并非学好PHP编程语言就行了,还需要了解更多的相关只是. 而我们要学习PHP第一步就是要学会如何在自己的电脑上安装PHP的运行环境. PHP程序