- 为什么需要使用 @weakify 和 @strongify
OwenYang
最近开始接手一些iOS工程且都是OC代码,虽然大学时学过C语言,但早已忘得一干二净。工程里面的@weakify和@strongify引起了我的好奇:他们到底是干啥的?打破循环引用的标准方法假设我们有一个model属性的controller,当模型中的数据发生变化时更新label。为此,我们建立了一个模型:-(void)setUpModel{Model*model=[Modelnew];//该blo
- 关于TableViewIndexPath的注意点
高浩浩浩浩浩浩
公司产品有个功能是cell右边放了一个switch控件,在操作状态的时候通过网络请求来改变最后的状态。效果图实现代码如下:-(UITableViewCell*)lh_tableView:(LHBaseTableView*)baseViewcellForRowAtIndexPath:(NSIndexPath*)indexPath{...@weakify(self)cell.cellOperation
- 2020-12-03 强弱舞
幸福晓杰2016
1.参考文章https://www.jianshu.com/p/bc794fa07167常规写法:__weaktypeof(self)weakSelf=self;block=^(){__strongtypeof(weakSelf)strongSelf=weakSelf;};类似高级写法@weakify将当前对象声明为weak..这样block内部引用当前对象,就不会造成引用计数+1可以破解循环引用
- RAC Textfield字符数限制,最后一个字符使用中文拼音无法输入时的问题
CaptainMi
@weakify(self);[self.nameField.rac_textSignalsubscribeNext:^(NSString*_Nullablex){@strongify(self);UITextRange*range=[self.nameFieldmarkedTextRange];//获取高亮部分UITextPosition*position=[self.nameFieldposi
- SDWebImage扩展笔记(二)
null_2562
@weakify(...)和@strongify(...)我们用@weakify(self)来梳理一遍宏的替换流程关于数数的宏metamacro_argcount,看不懂的同学请看这里weixin_34255793-小记:那个宏metamacro_argcount看完引用文章关于连接宏##和数数宏metamacro_argcount之后,我们来梳理下weakify的替换过程,#ifndefweak
- Switch 设置颜色
MJBaby
UISwitch设置自己想要的颜色,可以仿照以下处理[[self.defaultSwitchrac_signalForControlEvents:UIControlEventValueChanged]subscribeNext:^(__kindofUISwitch*_Nullablex){@strongify(self);if([xisEqual:self.defaultSwitch]){if(x
- 2019-06-01 iOS内存泄漏记录
刘小小博
@weakify(self);cell.imageSelectedAction=^{@strongify(self);[selfcollectionView:collectionViewdidSelectItemAtIndexPath:indexPath];};这里虽然进行了weak(self),但是仍然会造成循环引用,因为block里面出现了collectionview,collectionvi
- RAC整理
Xl_Lee
RAC常用的方法,搭配@weakify(self);@weakify(self);通知#RAC中的通知不需要手动removeobserver,其内部已经实现@weakify(self);[[[NSNotificationCenterdefaultCenter]rac_addObserverForName:kNotificationNameobject:nil]subscribeNext:^(NSN
- 日常开发笔记(一)
善良的皮蛋
1.__kindof__kindof关键字的理解一般结合泛型使用如@property(strong,nonatomic,readonly)NSMutableArray*sectionModels;表示数组可以包含model和model的子类2.@weakify(self)、@strongify(self)参考讲解的很清楚,在block中使用,和我们日常使用的自定义weakSelf、strongSe
- 一个ReactiveCocoa的小坑
子达如何
之前遇到过的一个小坑,没有记录下来。昨天再次遇到,记录一下。RAC需要@weakify(self)和@strongkify(self)来防止block的循环引用,这个大家都知道。有一个点忽略的是,当直接访问self的成员变量的时候,不能使用_val的方式,一定要用self.val。如果是纯的成员变量(没有对应的属性),也要用self->_val的方式访问。因为访问成员变量_val的时候,block
- weakSelf 和 strongSelf 应该什么时候用?
xbcoding
1、为什么会出现block的循环引用?block一般在对象内部声明(Block会retain‘self’),若在block内部使用了当前对象的属性(‘self‘又retain了Block),就会造成循环引用,从而引起内存泄露,block和当前对象都无法释放。@weakify/weakSelf:将当前对象声明为weak,这样block内部引用当前对象,就不会造成引用计数+1,可以破解循环引用。@st
- iOS开发之监听电话
chasitu
我们平时是用不到监听电话这个功能的,一般会在音乐播放器等功能的时候需要一些特殊设置的时候需要这个类,今天给小伙伴们分享一下导入电话的类import设置全局变量@property(nonatomic,strong)CTCallCenter*callCenter;初始化类,然后监听回调self.callCenter=[[CTCallCenteralloc]init];@weakify(self);[s
- iOS脚手架式搭建UITableView
小乙的乙
Flutter火了,很多人用它,性能很好。多平台开发。其中脚手架式的设计感觉很爽。尽量兼容H5andoridios的开发习惯。这点很不容易。刚入行的时候看过某个大神写的Demo对UITableView封装一层,用起来有点像脚手架的感觉。可惜Demo找不到了。废话不说了上代码。@weakify(self);//在tableView上添加一个section[selfaddSecion:^(MDScaf
- iOS 内存泄漏
yycache
一、正常的代理weak弱化都知道二、最常用的还是block内部的弱化这个需要注意的比较多。注意@weakify(self);和@strongify(self);的搭配使用的情况。下方列举:例如:1.正常的成员函数使用后直接调用即可//踢人@weakify(self);self.playerView.longPressBlock=^(NSDictionary*_NonnullplayerInfo){
- iOS weakify && strongify
青椒辣不辣
#definerj_weakify(var)__weaktypeof(var)RJWeak_##var=var;#definerj_strongify(var)\_Pragma("clangdiagnosticpush")\_Pragma("clangdiagnosticignored\"-Wshadow\"")\__strongtypeof(var)var=RJWeak_##var;\_Prag
- [iOS] 语法语义关键词等 (1)
木小易Ying
目录:继承中的@synthesize引用#import、#include、@importinlinedefine的函数用法@selector为啥用assignprotocol和父类定义的属性容易引起的crashifdefine防止头文件重复引入object强转bool需要synthesis的情况@weakify(self)1.继承中的@synthesize@synthesize我之前一直觉得没有什
- RAC之RACMulticastConnection简单学习
带有bug的文艺青年
当有多个订阅者,但是我们只想发送一个信号的时候怎么办?这时我们就可以用RACMulticastConnection,来实现。代码示例如下//1.发送请求,用一个信号内包装,不管有多少个订阅者,只想发一次请求self.single=[RACSignalcreateSignal:^RACDisposable*(idsubscriber){//发送请求NSLog(@"发送请求啦");@strongify
- OC:深入探究 block
LiYaoPeng
主要分析了block在持有__block、__weak、__strong修饰的对象时,block结构发生的变化。以及block对持有变量的引用计数造成的具体影响。思考:@implementationTestCode-(void)testFunc{@weakify(self)self.block111=^{@strongify(self);dispatch_after(dispatch_time(D
- 学习笔记:@weakify(self) 和 @strongify(self) 和 __weak、__strong等
双鱼子曰1987
一、修饰符ARC环境下,所有的修饰符有以下4种__strong修饰符__weak修饰符__unsafe_unretained修饰符__autoreleasing修饰符底层都是被函数objc_ownership(xxx)修饰,不同的修饰符,入参xxx不同。__strong--->objc_ownership(strong)__weak--->objc_ownership(weak)__unsafe_
- @weakify 与 @strongify 实现原理
chaoguo1234
为了解决Block造成的循环引用,iOS开发过程中常常使用@weakify与@strongify来解决这个问题。下面就来看下@weakify与@strongify的实现原理。准备知识宏参数(Arguments)的扩展可变参数宏宏定义中的重复副作用宏定义里面为什么要加括号?Block对变量的引用@weakify和@strongify的实现原理就是宏展开,阅读上面的准备知识可以更好的理解下面宏展开的过
- Objective-C 之 block
前言作为iOS开发,我们平日里会高频使用block,block非常重要,在学习Swift闭包时,我突然觉得可以将Objective-Cblock和Swift闭包一起对比学习。如果你针对下面的问题已经有了比较深的理解,那么可以略过本篇文章:block的数据结构block的内存机制block和weakify/strongify的关联Swift闭包和Objective-Cblock的区别dispatch
- OC Block + RAC strongify/weakify原理
ameerkat
探究方法:利用clang把oc实现转成cpp实现:xcrun-sdkiphonesimulatorclang-rewrite-objc-fobjc-arc-stdlib=libc++-mmacosx-version-min=10.7-fobjc-runtime=macosx-10.7-Wno-deprecated-declarations-F/Applications/Xcode.app/Cont
- iOS block嵌套block中weakify的使用
乳猪啸谷
结论:嵌套中的block只需要写strongify,不需要再写一次weakify只要持有block的变量和block中的变量不是同一个变量(可以指向同一个变量),就不会因此循环引用,导致memoryleak。下面对比两端代码:@weakify(self)self.blockA=^{@strongify(self)[selfdoSomething];//不加weakifyself.blockB=^{
- 宏
高乔人
首先weakSelf和strongSelf#definerj_weakify(var)__weaktypeof(var)RJWeak_##var=var;#definerj_strongify(var)\_Pragma("clangdiagnosticpush")\_Pragma("clangdiagnosticignored\"-Wshadow\"")\__strongtypeof(var)va
- ReactiveCocoa 之 @weakify/@strongify
CyrusCao
@weakify和@strongify是RAC中对于强弱引用操作的宏定义。1.拆解宏定义下面的代码以self作为例子,也就是说,括号中也可以是其他对象。//@weakify(self)实际上被宏定义为:#defineweakify(...)\ext_keywordify\metamacro_foreach_cxt(ext_weakify_,,__weak,__VA_ARGS__)//经过拆解,最终
- ReactiveCocoa中weakify与strongify的作用
petter102
@weakify(Obj)@strongify(Obj)这对宏在RACEXTScope.h中定义,RACFramework好像没有默认引入,需要单独import他们的作用主要是在block内部管理对self的引用:@weakify(self);//定义了一个__weak的self_weak_变量[RACObserve(self,name)subscribeNext:^(NSString*name)
- KVOController源码阅读:一款好用的KVO管理库
某非著名程序员
系统KVOKVO观察者模式的应用;运用了isa混写技术。能监听属性的变化;响应式的代表。释放是个问题,移除多次会闪退,内存泄漏导致dealloc没走,也会没释放。KVOController是为了解决这些问题。使用-(void)bind:(BLMeetingItemModel*)model{@weakify(self);[self.KVOControllerobserve:modelkeyPath:
- 关于@weakify和@strongify的几点问题及个人理解
Trevor_Li
这两个宏相信大家一定都不陌生,也知道该如何使用。本篇文章主要讲到下面几点问题,如果你都知道那么恭喜你,可以不用看这篇文章了。1、为什么前面有个@号?2、为什么一定要配对使用,为什么block里面不写strongify还是会造成循环引用?3、最简单写法?答案在此:1、为什么前面有个@号?答:纯粹为了装逼,这个@号实际上是一个@autoreleasePool{},宏命令中只写了autoreleaseP
- 宏定义
xiaoyaoyouzi
1.weakSelf和strongSelf#defineweakify(...)\ext_keywordify\metamacro_foreach_cxt(ext_weakify_,,__weak,__VA_ARGS__)#definestrongify(...)\ext_keywordify\_Pragma("clangdiagnosticpush")\_Pragma("clangdiagnos
- @weakify, @strongify在RAC的使用
superChan
@weakify@strongify。首先看一下实现的方式:方式1:传统写法:#ifndefweakify#if__has_feature(objc_arc)#defineweakify(x)_Pragma("clangdiagnosticpush")_Pragma("clangdiagnosticignored"-Wshadow"")autoreleasepool{}_weaktypeof(x)
- log4j对象改变日志级别
3213213333332132
javalog4jlevellog4j对象名称日志级别
log4j对象改变日志级别可批量的改变所有级别,或是根据条件改变日志级别。
log4j配置文件:
log4j.rootLogger=ERROR,FILE,CONSOLE,EXECPTION
#log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE=org.apache.l
- elk+redis 搭建nginx日志分析平台
ronin47
elasticsearchkibanalogstash
elk+redis 搭建nginx日志分析平台
logstash,elasticsearch,kibana 怎么进行nginx的日志分析呢?首先,架构方面,nginx是有日志文件的,它的每个请求的状态等都有日志文件进行记录。其次,需要有个队 列,redis的l
- Yii2设置时区
dcj3sjt126com
PHPtimezoneyii2
时区这东西,在开发的时候,你说重要吧,也还好,毕竟没它也能正常运行,你说不重要吧,那就纠结了。特别是linux系统,都TMD差上几小时,你能不痛苦吗?win还好一点。有一些常规方法,是大家目前都在采用的1、php.ini中的设置,这个就不谈了,2、程序中公用文件里设置,date_default_timezone_set一下时区3、或者。。。自己写时间处理函数,在遇到时间的时候,用这个函数处理(比较
- js实现前台动态添加文本框,后台获取文本框内容
171815164
文本框
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://w
- 持续集成工具
g21121
持续集成
持续集成是什么?我们为什么需要持续集成?持续集成带来的好处是什么?什么样的项目需要持续集成?... 持续集成(Continuous integration ,简称CI),所谓集成可以理解为将互相依赖的工程或模块合并成一个能单独运行
- 数据结构哈希表(hash)总结
永夜-极光
数据结构
1.什么是hash
来源于百度百科:
Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
- 乱七八糟
程序员是怎么炼成的
eclipse中的jvm字节码查看插件地址:
http://andrei.gmxhome.de/eclipse/
安装该地址的outline 插件 后重启,打开window下的view下的bytecode视图
http://andrei.gmxhome.de/eclipse/
jvm博客:
http://yunshen0909.iteye.com/blog/2
- 职场人伤害了“上司” 怎样弥补
aijuans
职场
由于工作中的失误,或者平时不注意自己的言行“伤害”、“得罪”了自己的上司,怎么办呢?
在职业生涯中这种问题尽量不要发生。下面提供了一些解决问题的建议:
一、利用一些轻松的场合表示对他的尊重
即使是开明的上司也很注重自己的权威,都希望得到下属的尊重,所以当你与上司冲突后,最好让不愉快成为过去,你不妨在一些轻松的场合,比如会餐、联谊活动等,向上司问个好,敬下酒,表示你对对方的尊重,
- 深入浅出url编码
antonyup_2006
应用服务器浏览器servletweblogicIE
出处:http://blog.csdn.net/yzhz 杨争
http://blog.csdn.net/yzhz/archive/2007/07/03/1676796.aspx
一、问题:
编码问题是JAVA初学者在web开发过程中经常会遇到问题,网上也有大量相关的
- 建表后创建表的约束关系和增加表的字段
百合不是茶
标的约束关系增加表的字段
下面所有的操作都是在表建立后操作的,主要目的就是熟悉sql的约束,约束语句的万能公式
1,增加字段(student表中增加 姓名字段)
alter table 增加字段的表名 add 增加的字段名 增加字段的数据类型
alter table student add name varchar2(10);
&nb
- Uploadify 3.2 参数属性、事件、方法函数详解
bijian1013
JavaScriptuploadify
一.属性
属性名称
默认值
说明
auto
true
设置为true当选择文件后就直接上传了,为false需要点击上传按钮才上传。
buttonClass
”
按钮样式
buttonCursor
‘hand’
鼠标指针悬停在按钮上的样子
buttonImage
null
浏览按钮的图片的路
- 精通Oracle10编程SQL(16)使用LOB对象
bijian1013
oracle数据库plsql
/*
*使用LOB对象
*/
--LOB(Large Object)是专门用于处理大对象的一种数据类型,其所存放的数据长度可以达到4G字节
--CLOB/NCLOB用于存储大批量字符数据,BLOB用于存储大批量二进制数据,而BFILE则存储着指向OS文件的指针
/*
*综合实例
*/
--建立表空间
--#指定区尺寸为128k,如不指定,区尺寸默认为64k
CR
- 【Resin一】Resin服务器部署web应用
bit1129
resin
工作中,在Resin服务器上部署web应用,通常有如下三种方式:
配置多个web-app
配置多个http id
为每个应用配置一个propeties、xml以及sh脚本文件
配置多个web-app
在resin.xml中,可以为一个host配置多个web-app
<cluster id="app&q
- red5简介及基础知识
白糖_
基础
简介
Red5的主要功能和Macromedia公司的FMS类似,提供基于Flash的流媒体服务的一款基于Java的开源流媒体服务器。它由Java语言编写,使用RTMP作为流媒体传输协议,这与FMS完全兼容。它具有流化FLV、MP3文件,实时录制客户端流为FLV文件,共享对象,实时视频播放、Remoting等功能。用Red5替换FMS后,客户端不用更改可正
- angular.fromJson
boyitech
AngularJSAngularJS 官方APIAngularJS API
angular.fromJson 描述: 把Json字符串转为对象 使用方法: angular.fromJson(json); 参数详解: Param Type Details json
string
JSON 字符串 返回值: 对象, 数组, 字符串 或者是一个数字 示例:
<!DOCTYPE HTML>
<h
- java-颠倒一个句子中的词的顺序。比如: I am a student颠倒后变成:student a am I
bylijinnan
java
public class ReverseWords {
/**
* 题目:颠倒一个句子中的词的顺序。比如: I am a student颠倒后变成:student a am I.词以空格分隔。
* 要求:
* 1.实现速度最快,移动最少
* 2.不能使用String的方法如split,indexOf等等。
* 解答:两次翻转。
*/
publ
- web实时通讯
Chen.H
Web浏览器socket脚本
关于web实时通讯,做一些监控软件。
由web服务器组件从消息服务器订阅实时数据,并建立消息服务器到所述web服务器之间的连接,web浏览器利用从所述web服务器下载到web页面的客户端代理与web服务器组件之间的socket连接,建立web浏览器与web服务器之间的持久连接;利用所述客户端代理与web浏览器页面之间的信息交互实现页面本地更新,建立一条从消息服务器到web浏览器页面之间的消息通路
- [基因与生物]远古生物的基因可以嫁接到现代生物基因组中吗?
comsci
生物
大家仅仅把我说的事情当作一个IT行业的笑话来听吧..没有其它更多的意思
如果我们把大自然看成是一位伟大的程序员,专门为地球上的生态系统编制基因代码,并创造出各种不同的生物来,那么6500万年前的程序员开发的代码,是否兼容现代派的程序员的代码和架构呢?
- oracle 外部表
daizj
oracle外部表external tables
oracle外部表是只允许只读访问,不能进行DML操作,不能创建索引,可以对外部表进行的查询,连接,排序,创建视图和创建同义词操作。
you can select, join, or sort external table data. You can also create views and synonyms for external tables. Ho
- aop相关的概念及配置
daysinsun
AOP
切面(Aspect):
通常在目标方法执行前后需要执行的方法(如事务、日志、权限),这些方法我们封装到一个类里面,这个类就叫切面。
连接点(joinpoint)
spring里面的连接点指需要切入的方法,通常这个joinpoint可以作为一个参数传入到切面的方法里面(非常有用的一个东西)。
通知(Advice)
通知就是切面里面方法的具体实现,分为前置、后置、最终、异常环
- 初一上学期难记忆单词背诵第二课
dcj3sjt126com
englishword
middle 中间的,中级的
well 喔,那么;好吧
phone 电话,电话机
policeman 警察
ask 问
take 拿到;带到
address 地址
glad 高兴的,乐意的
why 为什么
China 中国
family 家庭
grandmother (外)祖母
grandfather (外)祖父
wife 妻子
husband 丈夫
da
- Linux日志分析常用命令
dcj3sjt126com
linuxlog
1.查看文件内容
cat
-n 显示行号 2.分页显示
more
Enter 显示下一行
空格 显示下一页
F 显示下一屏
B 显示上一屏
less
/get 查询"get"字符串并高亮显示 3.显示文件尾
tail
-f 不退出持续显示
-n 显示文件最后n行 4.显示头文件
head
-n 显示文件开始n行 5.内容排序
sort
-n 按照
- JSONP 原理分析
fantasy2005
JavaScriptjsonpjsonp 跨域
转自 http://www.nowamagic.net/librarys/veda/detail/224
JavaScript是一种在Web开发中经常使用的前端动态脚本技术。在JavaScript中,有一个很重要的安全性限制,被称为“Same-Origin Policy”(同源策略)。这一策略对于JavaScript代码能够访问的页面内容做了很重要的限制,即JavaScript只能访问与包含它的
- 使用connect by进行级联查询
234390216
oracle查询父子Connect by级联
使用connect by进行级联查询
connect by可以用于级联查询,常用于对具有树状结构的记录查询某一节点的所有子孙节点或所有祖辈节点。
来看一个示例,现假设我们拥有一个菜单表t_menu,其中只有三个字段:
- 一个不错的能将HTML表格导出为excel,pdf等的jquery插件
jackyrong
jquery插件
发现一个老外写的不错的jquery插件,可以实现将HTML
表格导出为excel,pdf等格式,
地址在:
https://github.com/kayalshri/
下面看个例子,实现导出表格到excel,pdf
<html>
<head>
<title>Export html table to excel an
- UI设计中我们为什么需要设计动效
lampcy
UIUI设计
关于Unity3D中的Shader的知识
首先先解释下Unity3D的Shader,Unity里面的Shaders是使用一种叫ShaderLab的语言编写的,它同微软的FX文件或者NVIDIA的CgFX有些类似。传统意义上的vertex shader和pixel shader还是使用标准的Cg/HLSL 编程语言编写的。因此Unity文档里面的Shader,都是指用ShaderLab编写的代码,
- 如何禁止页面缓存
nannan408
htmljspcache
禁止页面使用缓存~
------------------------------------------------
jsp:页面no cache:
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cach
- 以代码的方式管理quartz定时任务的暂停、重启、删除、添加等
Everyday都不同
定时任务管理spring-quartz
【前言】在项目的管理功能中,对定时任务的管理有时会很常见。因为我们不能指望只在配置文件中配置好定时任务就行了,因为如果要控制定时任务的 “暂停” 呢?暂停之后又要在某个时间点 “重启” 该定时任务呢?或者说直接 “删除” 该定时任务呢?要改变某定时任务的触发时间呢? “添加” 一个定时任务对于系统的使用者而言,是不太现实的,因为一个定时任务的处理逻辑他是不
- EXT实例
tntxia
ext
(1) 增加一个按钮
JSP:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
Stri
- 数学学习在计算机研究领域的作用和重要性
xjnine
Math
最近一直有师弟师妹和朋友问我数学和研究的关系,研一要去学什么数学课。毕竟在清华,衡量一个研究生最重要的指标之一就是paper,而没有数学,是肯定上不了世界顶级的期刊和会议的,这在计算机学界尤其重要!你会发现,不论哪个领域有价值的东西,都一定离不开数学!在这样一个信息时代,当google已经让世界没有秘密的时候,一种卓越的数学思维,绝对可以成为你的核心竞争力. 无奈本人实在见地