- 【iOS分类、关联对象】如何使用关联对象给分类实现一个weak的属性
allanGold
Objective-Cios分类关联对象
如何使用关联对象给分类实现一个weak的属性通过关联对象objc_setAssociatedObject中的策略policy可知,并不支持使用weak修饰对象属性:typedefOBJC_ENUM(uintptr_t,objc_AssociationPolicy){OBJC_ASSOCIATION_ASSIGN=0,//assignOBJC_ASSOCIATION_RETAIN_NONATOMIC
- iOS 创建UIButton的增加分类扩大按钮的点击区域
匠心慢行
前言:在实际开发中会遇到一些页面由于设计给出的按钮尺寸很小导致这个按钮很难点击(尤其是手指胖的朋友),比如顶部返回按钮、cell里面的操作按钮、勾选协议时候的选中按钮等场景。这时候就需要适当的扩大按钮的点击范围来解决这个问题。思路:可以给button创建一个分类,创建一个公共方法,这个方法可以通过参数和关键字使用objc_setAssociatedObject将传入扩大的范围存起来,当用户触碰屏幕
- 分类随笔
羞涩的老湿鸡
分类常见面试题1、分类可以添加属性吗?答:分类可以添加属性,但是不会自动生成成员变量与get/set方法。但是我们可以通过objc_getAssociatedObject\objc_setAssociatedObject的方式来为UIButton这样的类添加属性。2、假设A类有一个a方法,现在我们又添加一个A1分类,同样也实现了一个a方法。此时在A类中调用a方法。谁会被调用?为什么?答:分类中的a
- iOS给类设置属性,是否禁用第三方键盘
雾霭天涯
iOS可以给类设置属性iOS可以设置是否禁用第三方键盘,以及针对个别页面是否禁用第三方键盘//为类别设置属性@property(nonatomic,assign,class)BOOLuseSystemKeyBoard;+(void)setUseSystemKeyBoard:(BOOL)useSystemKeyBoard{objc_setAssociatedObject(self,@selector
- runtime中的Associative和方法交换的使用
Baoger
runtime一个熟悉又陌生的名词,这篇文章只是记录一下笔者在实例中的使用,都是一些皮毛,大神可以忽略,第一次写,水平有限,如有错误的地方还请指出。直接进入主题,导入#import头文件Associative关联:1、objc_setAssociatedObject(id_Nonnullobject,constvoid*_Nonnullkey,id_Nullablevalue,objc_Assoc
- Runtime | Category | 分类添加属性
字符管理师
准备工作导入需要的头文件#import创建分类并声明一个属性#import"Persion.h"@interfacePersion(mult)@property(nonatomic,copy)NSString*nick;@end分类中属性实现constchar*name="rylsj";-(void)setNick:(NSString*)nick{objc_setAssociatedObject(
- iOS中关联对象的简单使用objc_setAssociatedObject
大布溜
iOS中关联对象的简单使用objc_setAssociatedObject首先看一下此方法接收的参数objc_setAssociatedObject(idobject,constvoid*key,idvalue,objc_AssociationPolicypolicy)被关联的对象,下面举的例子中关联到了UIAlertView要关联的对象的键值,一般设置成静态的,用于获取关联对象的值要关联的对象的
- iOS底层系列:关联对象
Sunxb
前言之前我们聊过了,在Category中声明一个属性,可以自己手动实现set和get方法,但是因为没有成员变量,所以说并不能储值。我们可以通过runtime的api实现让成员变量可以储值,其实本质也并不是储存,而是通过关联对象实现了这种看似是可以储值的效果。我们可以用下面的方法来设置关联对象。objc_setAssociatedObject(id_Nonnullobject,constvoid*_
- ObjC 学习笔记(二):对象关联
zevwings
我们在导入runtime经常会使用到关联对象这个特性,这个方法可以为我们动态的添加自定义属性。我们在经常使用到的对象关联方法有objc_getAssociatedObject,objc_removeAssociatedObjects和objc_setAssociatedObject三个,接下来我们就开始分析这三个方法的具体实现。objc_setAssociatedObject通常我们都通过如下方法
- ObjC 学习笔记(一):数据结构定义
zevwings
在iOS开发工程中,我们每天都会使用到ObjC,也会用到runtime的很多操作msgSend,method_swizzling,objc_setAssociatedObject,objc_getAssociatedObject等常用的runtime操作,那runtime究竟是怎样实现的呢?我们底层的数据结构又是怎样的呢?带着这些问题,开始学习runtime相关的内容。源码地址:objc4源代码我
- 消息转发机制
fcf7850dd33e
RunTime:1、获取所有的属性列表、方法列表、协议列表2、方法交换3、方法拦截调用,容错处理4、动态添加方法,关联对象分类添加属性objc_setAssociatedObject消息查找与消息转发机制:1、从缓存方法列表中查找2、从方法列表中查找3、从父类指针所指对象中查找4、一直没找到,转向拦截调用,重定向5、如果没有重写拦截调用的方法,程序报错+(BOOL)resolveClassMeth
- 通过运行时给分类添加属性
sz_蓝天使者
/**setter方法*/-(void)setName:(NSString*)name{objc_setAssociatedObject(self,&nameKey,name,OBJC_ASSOCIATION_COPY);}/**getter方法*/
- iOS-Runtime
fayxjc
iOS
runtime就是运行时机制,可以通过命令行clang-rewrite-objc对应的目标文件,就能将对应的OC的代码转成对应的运行时的代码所有的OC类和对象,在runtime层都是用struct表示的.用处:1、在category中想添加属性,则可与使用runtime动态添加。objc_setAssociatedObject(self,@selector(summaryDataModel),su
- 分类添加属性
Hurricane_4283
varblock:UITableViewBlock?{get{returnobjc_getAssociatedObject(self,&key)as?UITableViewBlock}set{objc_setAssociatedObject(self,&key,newValue,.OBJC_ASSOCIATION_RETAIN)}}
- DailyRecord-230726
清泉Kikyō
DailyRecordobjective-ccocoapods
技术OC:objc_setAssociatedObject,把一个对象绑定到另一个对象上,好用,结构简单将NSString转换为正确的JSON格式(ConvertingNSStringtoproperJSONformat)_电脑培训,用NSString格式写json有变量时用stringWithFormat双引号需要转义\",单引号不用转义xcode内换行时可以在句末加\js(知道有就行)type
- Objective-C关联对象的实现
DinoGuy
目的在NSObject类中,添加name属性。方案利用runtime的相关方法:动态添加属性objc_setAssociatedObject(idobject,constvoid*key,idvalue,objc_AssociationPolicypolicy);objc_AssociationPolicy相关枚举值typedefOBJC_ENUM(uintptr_t,objc_Associati
- Category 添加属性
曾经我
1.@property(nonatomic,copy)NSString*name;-(void)setName:(NSString*)name{objc_setAssociatedObject(self,@selector(name),name,OBJC_ASSOCIATION_RETAIN_NONATOMIC);}-(NSString*)name{returnobjc_getAssociated
- Swift 导航全屏滑动返回实现
蹦擦擦我勒个去
importUIKitfileprivatevarslideEnabledKey="slideEnabled"extensionUINavigationController{///shouldslidetoback.defaultistruevarslideEnabled:Bool{set{objc_setAssociatedObject(self,&slideEnabledKey,newValu
- Runtime 属性关联方法
wangDavid939i
通常情况下,我们用【类别】去对【原有类】进行【属性】的添加,如果在编译的时候不会报错,但是在运行阶段则会崩溃!所以,我们通过对属性的set、get方法重写并调用【关联属性】的方法,即可完成属性的【赋值和打印】,并且不会崩溃。staticconstchardelegateKey//这是用来确认唯一身份的标识■设置类关联属性objc_setAssociatedObject(object,key,val
- 关联对象
滨滨_57b5
由于分类是不能直接添加成员变量的,因此需要使用关联对象技术为分类添加成员变量,由此引出几个问题:问题1❓:什么是成员变量,成员变量和实例变量还有属性的区别是什么?问题2❓:分类中是如何添加成员变量的,其实现原理是什么?问题3❓:分类中添加的成员变量被保存在哪?(在宿主类上还是其他什么地方)源码分析:objc_setAssociatedObject入口函数voidobjc_setAssociated
- Category添加成员变量
ios小菜
##使用分类添加成员属性-使用objc_getAssociatedObject实现get方法```objcidobjc_getAssociatedObject(idobject,void*key)//第一个参数是self,第二个参数是设置进去的value值,可以自己定义```-使用objc_setAssociatedObject使用set方法```objcOBJC_EXPORTvoidobjc_s
- objective-c对象缓存与tagged指针优化
macroC
背景工程中出现了一段看似必崩的代码,比较好奇,代码如下:–(void)setSomeThing:(BOOL)someThing{objc_setAssociatedObject(self,kIsPreviewKey,[NSNumbernumberWithBool:someThing],OBJC_ASSOCIATION_ASSIGN);}–(BOOL)isPreview{idtemp=objc_ge
- 【iOS】—— 分类、扩展和关联对象
西邮郭富城
iOS笔记ios分类objective-c
分类、扩展和关联对象一、分类与扩展的区别1、`category`类别(分类)2、`extension`(类扩展)二、关联对象的实现1.关联对象的实现步骤:2.关联对象分析:三、关联对象-设值流程1.四个核心对象:2.`objc_setAssociatedObject`解析:内存策略:`_object_set_associative_reference`源码如下:3.`AssociationsMan
- iOS 基础知识之关联对象
对您有用赏个赞
简介associatedObject又称关联对象,把一个对象关联到另外一个对象身上,使两者能够产生联系。关联对象的使用场景最多的是给一个分类增加属性。通过objc_setAssociatedObject和objc_getAssociatedObject方法来设置和获取关联对象。通过objc_removeAssociatedObjects移除关联对象。用法设置关联对象API/***Setsanass
- 有关runtime的一点记录
请叫我魔法师
虽然很早很早就知道有这么个牛逼的存在。看过一些皮毛,看完之后哦了几声感觉高大上,仿佛看懂了。不过过了一会就不知道刚才看的是什么了!看了看MJRefresh和YYModel源码中,看到了这个方法,使用频率挺高。记录一下,多一些认识1、关联对象方法objc_setAssociatedObject/objc_getAssociatedObject一看名字就知道,类似get和set方法。一个赋值一个取值。
- iOS中关联对象的简单使用objc_setAssociatedObject
福将的逆袭
iOS中关联对象的简单使用objc_setAssociatedObject首先看一下此方法接收的参数objc_setAssociatedObject(idobject,constvoid*key,idvalue,objc_AssociationPolicypolicy)被关联的对象,下面举的例子中关联到了UIAlertView要关联的对象的键值,一般设置成静态的,用于获取关联对象的值要关联的对象的
- [17]Effective Objective-C 2.0【10-11】
默然走一生
第十条:在既有类中使用关联对象存放自定义数据这条讲的是objc_setAssociatedObject和objc_getAssociatedObject,如何使用在这里就不多说了。值得强调的一点是,用关联对象可能会引入难于查找的bug,毕竟是在runtime阶段,所以可能要看情况谨慎选择1.category使用objc_setAssociatedObject/objc_getAssociatedO
- UIView+Touch
WLAnswer
staticchartouchKey;-(void)actionTap{void(^block)(void)=objc_getAssociatedObject(self,&touchKey);if(block)block();}-(void)addTouch:(TouchBlock)block{UITapGestureRecognizer*tap=[[UITapGestureRecognizera
- iOS - swift 拓展添加属性
Th丶小伟
Swift不允许在extension(类扩展)中直接添加属性。可以使用OC的关联属性(objc_set/getAssociatedObject)实现添加属性extensionUIView{varname:String{get{return(objc_getAssociatedObject(self,&ExtensionViewKey)as?String)!}set{objc_setAssociat
- iOS底层-关联对象探索
含笑州
关联对象探索其底层原理的实现,主要分为两部分:通过objc_setAssociatedObject设值流程通过objc_getAssociatedObject取值流程关联对象-设值流程在分类LG中重写属性cate_name的set、get方法,通过runtime的属性关联方法实现图1运行程序,断点断在main中cate_name赋值处图2继续往下运行,断在分类的setCate_name方法中图3.
- [黑洞与暗粒子]没有光的世界
comsci
无论是相对论还是其它现代物理学,都显然有个缺陷,那就是必须有光才能够计算
但是,我相信,在我们的世界和宇宙平面中,肯定存在没有光的世界....
那么,在没有光的世界,光子和其它粒子的规律无法被应用和考察,那么以光速为核心的
&nbs
- jQuery Lazy Load 图片延迟加载
aijuans
jquery
基于 jQuery 的图片延迟加载插件,在用户滚动页面到图片之后才进行加载。
对于有较多的图片的网页,使用图片延迟加载,能有效的提高页面加载速度。
版本:
jQuery v1.4.4+
jQuery Lazy Load v1.7.2
注意事项:
需要真正实现图片延迟加载,必须将真实图片地址写在 data-original 属性中。若 src
- 使用Jodd的优点
Kai_Ge
jodd
1. 简化和统一 controller ,抛弃 extends SimpleFormController ,统一使用 implements Controller 的方式。
2. 简化 JSP 页面的 bind, 不需要一个字段一个字段的绑定。
3. 对 bean 没有任何要求,可以使用任意的 bean 做为 formBean。
使用方法简介
- jpa Query转hibernate Query
120153216
Hibernate
public List<Map> getMapList(String hql,
Map map) {
org.hibernate.Query jpaQuery = entityManager.createQuery(hql);
if (null != map) {
for (String parameter : map.keySet()) {
jp
- Django_Python3添加MySQL/MariaDB支持
2002wmj
mariaDB
现状
首先,
[email protected] 中默认的引擎为 django.db.backends.mysql 。但是在Python3中如果这样写的话,会发现 django.db.backends.mysql 依赖 MySQLdb[5] ,而 MySQLdb 又不兼容 Python3 于是要找一种新的方式来继续使用MySQL。 MySQL官方的方案
首先据MySQL文档[3]说,自从MySQL
- 在SQLSERVER中查找消耗IO最多的SQL
357029540
SQL Server
返回做IO数目最多的50条语句以及它们的执行计划。
select top 50
(total_logical_reads/execution_count) as avg_logical_reads,
(total_logical_writes/execution_count) as avg_logical_writes,
(tot
- spring UnChecked 异常 官方定义!
7454103
spring
如果你接触过spring的 事物管理!那么你必须明白 spring的 非捕获异常! 即 unchecked 异常! 因为 spring 默认这类异常事物自动回滚!!
public static boolean isCheckedException(Throwable ex)
{
return !(ex instanceof RuntimeExcep
- mongoDB 入门指南、示例
adminjun
javamongodb操作
一、准备工作
1、 下载mongoDB
下载地址:http://www.mongodb.org/downloads
选择合适你的版本
相关文档:http://www.mongodb.org/display/DOCS/Tutorial
2、 安装mongoDB
A、 不解压模式:
将下载下来的mongoDB-xxx.zip打开,找到bin目录,运行mongod.exe就可以启动服务,默
- CUDA 5 Release Candidate Now Available
aijuans
CUDA
The CUDA 5 Release Candidate is now available at http://developer.nvidia.com/<wbr></wbr>cuda/cuda-pre-production. Now applicable to a broader set of algorithms, CUDA 5 has advanced fe
- Essential Studio for WinRT网格控件测评
Axiba
JavaScripthtml5
Essential Studio for WinRT界面控件包含了商业平板应用程序开发中所需的所有控件,如市场上运行速度最快的grid 和chart、地图、RDL报表查看器、丰富的文本查看器及图表等等。同时,该控件还包含了一组独特的库,用于从WinRT应用程序中生成Excel、Word以及PDF格式的文件。此文将对其另外一个强大的控件——网格控件进行专门的测评详述。
网格控件功能
1、
- java 获取windows系统安装的证书或证书链
bewithme
windows
有时需要获取windows系统安装的证书或证书链,比如说你要通过证书来创建java的密钥库 。
有关证书链的解释可以查看此处 。
public static void main(String[] args) {
SunMSCAPI providerMSCAPI = new SunMSCAPI();
S
- NoSQL数据库之Redis数据库管理(set类型和zset类型)
bijian1013
redis数据库NoSQL
4.sets类型
Set是集合,它是string类型的无序集合。set是通过hash table实现的,添加、删除和查找的复杂度都是O(1)。对集合我们可以取并集、交集、差集。通过这些操作我们可以实现sns中的好友推荐和blog的tag功能。
sadd:向名称为key的set中添加元
- 异常捕获何时用Exception,何时用Throwable
bingyingao
用Exception的情况
try {
//可能发生空指针、数组溢出等异常
} catch (Exception e) {
 
- 【Kafka四】Kakfa伪分布式安装
bit1129
kafka
在http://bit1129.iteye.com/blog/2174791一文中,实现了单Kafka服务器的安装,在Kafka中,每个Kafka服务器称为一个broker。本文简单介绍下,在单机环境下Kafka的伪分布式安装和测试验证 1. 安装步骤
Kafka伪分布式安装的思路跟Zookeeper的伪分布式安装思路完全一样,不过比Zookeeper稍微简单些(不
- Project Euler
bookjovi
haskell
Project Euler是个数学问题求解网站,网站设计的很有意思,有很多problem,在未提交正确答案前不能查看problem的overview,也不能查看关于problem的discussion thread,只能看到现在problem已经被多少人解决了,人数越多往往代表问题越容易。
看看problem 1吧:
Add all the natural num
- Java-Collections Framework学习与总结-ArrayDeque
BrokenDreams
Collections
表、栈和队列是三种基本的数据结构,前面总结的ArrayList和LinkedList可以作为任意一种数据结构来使用,当然由于实现方式的不同,操作的效率也会不同。
这篇要看一下java.util.ArrayDeque。从命名上看
- 读《研磨设计模式》-代码笔记-装饰模式-Decorator
bylijinnan
java设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.Fi
- Maven学习(一)
chenyu19891124
Maven私服
学习一门技术和工具总得花费一段时间,5月底6月初自己学习了一些工具,maven+Hudson+nexus的搭建,对于maven以前只是听说,顺便再自己的电脑上搭建了一个maven环境,但是完全不了解maven这一强大的构建工具,还有ant也是一个构建工具,但ant就没有maven那么的简单方便,其实简单点说maven是一个运用命令行就能完成构建,测试,打包,发布一系列功
- [原创]JWFD工作流引擎设计----节点匹配搜索算法(用于初步解决条件异步汇聚问题) 补充
comsci
算法工作PHP搜索引擎嵌入式
本文主要介绍在JWFD工作流引擎设计中遇到的一个实际问题的解决方案,请参考我的博文"带条件选择的并行汇聚路由问题"中图例A2描述的情况(http://comsci.iteye.com/blog/339756),我现在把我对图例A2的一个解决方案公布出来,请大家多指点
节点匹配搜索算法(用于解决标准对称流程图条件汇聚点运行控制参数的算法)
需要解决的问题:已知分支
- Linux中用shell获取昨天、明天或多天前的日期
daizj
linuxshell上几年昨天获取上几个月
在Linux中可以通过date命令获取昨天、明天、上个月、下个月、上一年和下一年
# 获取昨天
date -d 'yesterday' # 或 date -d 'last day'
# 获取明天
date -d 'tomorrow' # 或 date -d 'next day'
# 获取上个月
date -d 'last month'
#
- 我所理解的云计算
dongwei_6688
云计算
在刚开始接触到一个概念时,人们往往都会去探寻这个概念的含义,以达到对其有一个感性的认知,在Wikipedia上关于“云计算”是这么定义的,它说:
Cloud computing is a phrase used to describe a variety of computing co
- YII CMenu配置
dcj3sjt126com
yii
Adding id and class names to CMenu
We use the id and htmlOptions to accomplish this. Watch.
//in your view
$this->widget('zii.widgets.CMenu', array(
'id'=>'myMenu',
'items'=>$this-&g
- 设计模式之静态代理与动态代理
come_for_dream
设计模式
静态代理与动态代理
代理模式是java开发中用到的相对比较多的设计模式,其中的思想就是主业务和相关业务分离。所谓的代理设计就是指由一个代理主题来操作真实主题,真实主题执行具体的业务操作,而代理主题负责其他相关业务的处理。比如我们在进行删除操作的时候需要检验一下用户是否登陆,我们可以删除看成主业务,而把检验用户是否登陆看成其相关业务
- 【转】理解Javascript 系列
gcc2ge
JavaScript
理解Javascript_13_执行模型详解
摘要: 在《理解Javascript_12_执行模型浅析》一文中,我们初步的了解了执行上下文与作用域的概念,那么这一篇将深入分析执行上下文的构建过程,了解执行上下文、函数对象、作用域三者之间的关系。函数执行环境简单的代码:当调用say方法时,第一步是创建其执行环境,在创建执行环境的过程中,会按照定义的先后顺序完成一系列操作:1.首先会创建一个
- Subsets II
hcx2013
set
Given a collection of integers that might contain duplicates, nums, return all possible subsets.
Note:
Elements in a subset must be in non-descending order.
The solution set must not conta
- Spring4.1新特性——Spring缓存框架增强
jinnianshilongnian
spring4
目录
Spring4.1新特性——综述
Spring4.1新特性——Spring核心部分及其他
Spring4.1新特性——Spring缓存框架增强
Spring4.1新特性——异步调用和事件机制的异常处理
Spring4.1新特性——数据库集成测试脚本初始化
Spring4.1新特性——Spring MVC增强
Spring4.1新特性——页面自动化测试框架Spring MVC T
- shell嵌套expect执行命令
liyonghui160com
一直都想把expect的操作写到bash脚本里,这样就不用我再写两个脚本来执行了,搞了一下午终于有点小成就,给大家看看吧.
系统:centos 5.x
1.先安装expect
yum -y install expect
2.脚本内容:
cat auto_svn.sh
#!/bin/bash
- Linux实用命令整理
pda158
linux
0. 基本命令 linux 基本命令整理
1. 压缩 解压 tar -zcvf a.tar.gz a #把a压缩成a.tar.gz tar -zxvf a.tar.gz #把a.tar.gz解压成a
2. vim小结 2.1 vim替换 :m,ns/word_1/word_2/gc  
- 独立开发人员通向成功的29个小贴士
shoothao
独立开发
概述:本文收集了关于独立开发人员通向成功需要注意的一些东西,对于具体的每个贴士的注解有兴趣的朋友可以查看下面标注的原文地址。
明白你从事独立开发的原因和目的。
保持坚持制定计划的好习惯。
万事开头难,第一份订单是关键。
培养多元化业务技能。
提供卓越的服务和品质。
谨小慎微。
营销是必备技能。
学会组织,有条理的工作才是最有效率的。
“独立
- JAVA中堆栈和内存分配原理
uule
java
1、栈、堆
1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)3. 堆:存放所有new出来的对象。4. 静态域:存放静态成员(static定义的)5. 常量池:存放字符串常量和基本类型常量(public static f