IOS 避免self循环引用的方法的实例详解
IOS 避免self循环引用的方法的实例详解
示例代码:
// - weak & strong #define myWeakify(VAR) \ try {} @finally {} \ __weak __typeof__(VAR) VAR##_myWeak_ = (VAR) #define myStrongify(VAR) \ try {} @finally {} \ __strong __typeof__(VAR) VAR = VAR##_myWeak_ #define myStrongifyRetVIfNil(VAR, RET) \ try {} @finally {} \ __strong __typeof__(VAR) VAR = VAR##_myWeak_;\ if(VAR == nil) return RET #define myStrongifyRetNIfNil(VAR) \ try {} @finally {} \ __strong __typeof__(VAR) VAR = VAR##_myWeak_;\ if(VAR == nil) return
使用如下:
- (void)handleFromVC { NSArray *viewControllers = self.navigationController.viewControllers; @myWeakify(self); [viewControllers enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { @myStrongifyRetNIfNil(self); //代码 }]; }
如有疑问请留言或到本站社区交流讨论,感谢阅读,希望通过本文能帮助到大家,谢谢大家对本站的支持!
相关推荐
-
IOS self和super详解实现原理及区别
self和super区别 1.self调用自己方法,super调用父类方法 2.self是类,super是预编译指令 3.[self class]和[super class]输出是一样的 self和super底层实现原理 1.当使用 self 调用方法时,会从当前类的方法列表中开始找,如果没有,就从父类中再找:而当使用 super 时,则从父类的方法列表中开始找,然后调用父类的这个方法. 2.当使用 self 调用时,会使用 objc_msgSend 函数: id objc_msgSend
-
IOS 避免self循环引用的方法的实例详解
IOS 避免self循环引用的方法的实例详解 示例代码: // - weak & strong #define myWeakify(VAR) \ try {} @finally {} \ __weak __typeof__(VAR) VAR##_myWeak_ = (VAR) #define myStrongify(VAR) \ try {} @finally {} \ __strong __typeof__(VAR) VAR = VAR##_myWeak_ #define myStrongif
-
微信小程序引用公共js里的方法的实例详解
微信小程序引用公共js里的方法的实例详解 一个小程序页面由四个文件组成,一个小程序页面的四个文件具有相同路径与文件名,由此我们可知一个小程序页面对应着一个跟页面同名的js文件.可是当有些公共方法,我们想抽离出来成为一个独立公共的js文件.我们该如何实现呢. 在根目录下有一个app.js文件.这个根目录的js 文件我们可以通过getApp()轻松调用. //app.js App({ globaData:'huangenai' }) //test.js var app = getApp(); Pag
-
IOS 改变导航栏返回按钮的标题实例详解
IOS 改变导航栏返回按钮的标题实例详解 前言: 下午又找到了一个新的方法 这个方法不错 暂时没有发现异常的地方. 新写的App中需要使用UINavigationController对各个页面进行导航,但由于第一级页面的title较长,在进入第二级页面后返回按钮leftButtonItem的title就会变得很长,对NavigationBar空间占用很大,而且不美观,于是使用代码对leftButtonItem的title文本进行修改,无论是设置self.navigationItem.leftBa
-
PHP的重载使用魔术方法代码实例详解
摘录PHP官网对PHP重载的解释: PHP所提供的"重载"(overloading)是指动态地"创建"类属性和方法.我们是通过魔术方法(magic methods)来实现的. 当调用当前环境下未定义或不可见的类属性或方法时,重载方法会被调用.本节后面将使用"不可访问属性(inaccessible properties)"和"不可访问方法(inaccessible methods)"来称呼这些未定义或不可见的类属性或方法. 所有
-
JavaScript数组reduce()方法使用实例详解
目录 前言 1.累加和累积乘法 2.获取一个数组的最大值和最小值 3.计算数组中元素出现的频率 4.多个数组的展平 总结 前言 今天请让我详细介绍一下这个方法,希望对你有帮助. 这是 reduce 的基本用法: var arr = [1, 2, 3]; function reducer(parmar1, parmar2){ } arr.reduce(reducer) reduce是数组原型对象上的一个方法,可以帮助我们操作数组.它将另一个函数作为其参数,可以称为reducer. reducer
-
IOS开发之手势响应事件优先级的实例详解
IOS开发之手势响应事件优先级的实例详解 交互响应事件都是通过手势的操作完成的,如点击.或双击.或长按,这些交互都是在视图中完成的,但是不同的视图可能会有不同的交互,有时候就会出现交互响应事件冲突的情况.这时候就需要处理事件优先级,以便达到想要的效果. 示例场景:一个自定义模式视图view中,有一个列表视图table,同时有一个确定的按钮视图button:在view中有一个单击事件UITapGestureRecognizer,在table中点击每个cell也会有点击事件,同样的button中有个
-
java 中createStatement()方法的实例详解
java 中createStatement()方法的实例详解 用缺省设置创建时,ResultSet 是一种只能访问一次(one-time-through).只能向前访问(forward-only)和只读的对象.您只能访问数据一次,如果再次需要该 数据,必须重新查询数据库. 然而,并不只有这一种方式.通过设置 Statement 对象上的参数,您可以控制它产生的 ResultSet.例如: ... Class.forName(driverName); db = DriverManager.getC
-
java导出Excel通用方法的实例详解
java导出Excel通用方法的实例详解 Java导出Excel通用方法,只需要一个list 集合.通用方法改进之处踊跃提出 package oa.common.utils; import java.io.OutputStream; import java.util.List; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext; import java.lan
-
java 中序列化与readResolve()方法的实例详解
java 中序列化与readResolve()方法的实例详解 readResolve方法是作用是什么?这个方法跟对象的序列化相关(这样倒是解释了为什么 readResolve方法是private修饰的). 怎么跟对象的序列化相关了? 下面我们先简要地回顾下对象的序列化.一般来说,一个类实现了 Serializable接口,我们就可以把它往内存地写再从内存里读出而"组装"成一个跟原来一模一样的对象.不过当序列化遇到单例时,里边就有了个问题:从内存读出而组装的对象破坏了单例的规则.单例是要
-
Android ListView里控件添加监听方法的实例详解
Android ListView里控件添加监听方法的实例详解 关于ListView,算是android中比较常见的控件,在ListView我们通常需要一个模板,这个模板指的不是住模块,而是配置显示在ListView里面的东西,今天做项目的时候发现想要添加一个ImageView监听方法,发现崩了,也许是好久没有动ListView竟然忘了不能直接在主UI的xml文件里面调用其他xml文件的控件,哪怕ListView用的是这个xml文件. [错误示范]: 直接调用ImageView这个控件是ListV
随机推荐
- ASP/VBScript中CHR(0)的由来以及带来的安全问题分析
- python使用wxpython开发简单记事本的方法
- JavaScript DOM 添加事件
- 如何实现chrome浏览器关闭页面时弹出“确定要离开此面吗?”
- WordPress判断用户是否登录的代码
- Android 添加系统设置属性的实现及步骤
- Android Studio使用教程(五):Gradle命令详解和导入第三方包
- Node.js中的流(Stream)介绍
- asp.net Oracle数据库访问操作类
- Linux操作系统12则经典应用技巧
- 引入CSS样式的五种方式
- 详谈js遍历集合(Array,Map,Set)
- oracle中left join和right join的区别浅谈
- JQuery ztree 异步加载实例讲解
- 深入理解jQuery中的事件冒泡
- jquery $.ajax入门应用二
- Javascript数组Array基础介绍
- 原生JS实现《别踩白块》游戏(兼容IE)
- php Try Catch异常测试
- android编程之menu按键功能实现方法