Block多层嵌套导致对象不释放解决

@weakify(self);
 [self.customerViewModel loginCustomerLogicWithMobile:mobile
                                                Password:password
                                        NormalLoginBlock:^{
                                            @strongify(self);  

                                            if ([self.customerViewModel getResponseStatus] == ZSYResponseSuccess) {
                                                if (self.navigationController.presentingViewController != nil) {
                                                    [self.navigationController dismissViewControllerAnimated:YES completion:nil];
                                                } else {
                                                    [self.navigationController popViewControllerAnimated:YES];
                                                }
                                            } else{
                                                //设置手势密码失败、注册失败,停留在手势密码界面
                                                self.buttonNext.enabled = YES;
                                                [self.txtLoginPwd becomeFirstResponder];
                                            }  

                                        } ForgetGesturePasswordBlock:^{
        @strongify(self);
                                       __block ZSYCustomerLoginViewController *point = self;//对指针retain一次</strong></span>
                                            [CLLockVC showSettingLockVCInVC:self successBlock:^(CLLockVC *lockVC, NSString *pwd) {  

                                                //保存手势密码到服务器
                                                GesturePasswordBlock block = [point.customerViewModel saveGesturePasswordCallback];
                                                block(mobile, pwd);  

                                                //密码保存成功之后,退出手势密码界面
                                                [CLLockVC dismiss:.3f Completion:nil];
                                                point = nil;//对指针release一次,保持前后retainCount守恒
                                            }];  

                                        } CreateGesturePasswordBlock:^{  

                                            [CLLockVC showSettingLockVCInVC:self successBlock:^(CLLockVC *lockVC, NSString *pwd) {
                                                @strongify(self);  

                                                //保存手势密码到服务器
                                                GesturePasswordBlock block = [self.customerViewModel saveGesturePasswordCallback];
                                                block(mobile, pwd);  

                                                //密码保存成功之后,退出手势密码界面
                                                [CLLockVC dismiss:.3f Completion:nil];
                                            }];
                                        }];                                 
时间: 2024-12-07 14:29:56

Block多层嵌套导致对象不释放解决的相关文章

检查SharePoint代码中对象是否释放的小工具

问题 一般继承IDisposable接口的对象, 在使用完成后可以释放对象以免占用过多的资源, 当然也可是使用using语句来完成此操作. 但是当项目很大的时候, 代码也比较多, 我们更多希望有工具来检查项目中是否有类似的对象没有释放. 解决办法 微软其实提供了一个小工具"SharePoint Dispose Checker Tool", 但是很遗憾, 不支持SharePoint 2013, 有需求的朋友可以点击下面的链接查看. 地址: https://gallery.technet.

iOS开发-多层嵌套block中如何使用__weak和__strong

1.关于__weak__weak只能在ARC模式下使用,也只能修饰对象(比如NSString等),不能修饰基本数据类型(比如int等)__weak修饰的对象在block中不可以被重新赋值.__weak只在ARC下使用,可以避免循环引用.__weak修饰对象不会增加引用 __weak __typeof(self) weakSelf = self; self.testBlock = ^{ [weakSelf doSomeThing]; }); 弱引用不会影响对象的释放,但是当对象被释放时,所有指向它

SAX解析多层嵌套XML

最近工程需要解析多层嵌套XML,没有找到合适的公共解析的,要是一个类自己对应写一个解析方法,岂不累死,于是自己写了个通用的解析类.现在还不是很完善,对子类的解析需要提前指定好子类不能动态解析. 我用的是DefaultHandler来处理XML,里面方法执行过程是 public void startDocument() throws SAXException 第一个执行方法. public void startElement(String uri, String localName, String

iOS中block 静态全局局部变量block变量,以及对象,详解!

//最近总是犯迷糊,关于block对外部变量的引用,今天有时间就写了一下,加深自己的理解,巩固基础知识 1 #import <Foundation/Foundation.h> 2 int gNum = 100; 3 int main(int argc, const char * argv[]) { 4 @autoreleasepool { 5 static int sNum = 100; 6 __block int bNum = 100; 7 int lNum = 100; 8 int (^s

C#+ArcEngine中com对象的释放问题

1.问题描述 最近在写C#下AE的开发,在循环获取数据并修改时碰到了两个问题"超出系统资源"和"超出打开游标最大数":在网上看了一些资料,发现都是说在循环中没有释放已经使用过的对象,但是在循环中实际上是有为com对象赋值为null的,但是还是没法解决.后来想着将对象赋值为null和marshal是不是效果不一样,就特意写了一个简单的循环来测试,代码如下(初级代码,比较乱,请轻喷): 1 public void Test_释放游标方式() 2 { 3 string s

ie、firefox、chrome中关于style=&quot;display:block&quot; 引发的页面布局错乱的解决办法

ie.firefox.chrome中关于style="display:block" 引发的页面布局错乱的解决办法: table中tr 添加style="display:block" 导致页面布局错乱 对table中tr 不显示时,添加style="display:none",ie.chrome.firefox等都没有问题.但是如果想要显示某个tr,就不能使用style="display:block"了,因为,在ie下,可以正常

让代码重构渐行渐远系列(1)——解除多层嵌套

重构背景及原因 最近由于项目组的人员在不断扩充,导致项目中代码风格各异,大有百花齐放甚至怒放之势.考虑到团队的生存与发展,经过众人多次舌战之后,最终决定项目组根据业务分成几个小分队,以加强团队管理与提高效率,同时也能培养阶梯人才.各个小分队为了“统一”代码风格,提高成员的代码能力以便最终能提高项目代码质量,减少以后的维护成本,最终决定“每日”进行小组内的代码走查/审查(Code Review),然后进行代码重构. 解除多层嵌套:我所谓的多层嵌套是指的如下代码: 1 public bool 多层嵌

require或include相对路径多层嵌套引发的问题

require或include相对路径多层嵌套引发的问题 php中require/include 包含相对路径的解决办法 在PHP中require,include一个文件时,大都是用相对路径,是个很头疼的问题. 例如: (网站根目录) ├文件夹 │ │ │ └1.php ├文件夹 │ │ │ └2.php └index.php 问题:在1.php中通过include(“../B/2.php”)来引入B目录下的2.php文件: 在index.php中通过include(“A/1.php”)来引入A

Android Gson解析多层嵌套复杂数据

目前解析json有三种工具:org.json(Java常用的解析),fastjson(阿里巴巴工程师开发的),Gson(Google官网出的),解析速度最快的是Gson,下载地址:https://code.google.com/p/google-gson/ 什么是JSON: JSON即JavaScript Object Natation, 它是一种轻量级的数据交换格式, 与XML一样, 是广泛被采用的客户端和服务端交互的解决方案. JSON对象:  JSON中对象(Object)以"{"