- Effective Objective-C 2.0 读书笔记——关联对象
小鹿撞出了脑震荡
objective-cios开发语言
EffectiveObjective-C2.0读书笔记——关联对象文章目录EffectiveObjective-C2.0读书笔记——关联对象前言如何给分类添加实例变量?**示例:动态方法列表**关联对象运行原理内存管理策略`objc_setAssociatedObject`参数说明`objc_getAssociatedObject`参数说明`objc_removeAssociatedObjects
- 【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
- Java开发中,spring mvc 的线程怎么调用?
小麦麦子
springmvc
今天逛知乎,看到最近很多人都在问spring mvc 的线程http://www.maiziedu.com/course/java/ 的启动问题,觉得挺有意思的,那哥们儿问的也听仔细,下面的回答也很详尽,分享出来,希望遇对遇到类似问题的Java开发程序猿有所帮助。
问题:
在用spring mvc架构的网站上,设一线程在虚拟机启动时运行,线程里有一全局
- maven依赖范围
bitcarter
maven
1.test 测试的时候才会依赖,编译和打包不依赖,如junit不被打包
2.compile 只有编译和打包时才会依赖
3.provided 编译和测试的时候依赖,打包不依赖,如:tomcat的一些公用jar包
4.runtime 运行时依赖,编译不依赖
5.默认compile
依赖范围compile是支持传递的,test不支持传递
1.传递的意思是项目A,引用
- Jaxb org.xml.sax.saxparseexception : premature end of file
darrenzhu
xmlprematureJAXB
如果在使用JAXB把xml文件unmarshal成vo(XSD自动生成的vo)时碰到如下错误:
org.xml.sax.saxparseexception : premature end of file
很有可能时你直接读取文件为inputstream,然后将inputstream作为构建unmarshal需要的source参数。InputSource inputSource = new In
- CSS Specificity
周凡杨
html权重Specificitycss
有时候对于页面元素设置了样式,可为什么页面的显示没有匹配上呢? because specificity
CSS 的选择符是有权重的,当不同的选择符的样式设置有冲突时,浏览器会采用权重高的选择符设置的样式。
规则:
HTML标签的权重是1
Class 的权重是10
Id 的权重是100
- java与servlet
g21121
servlet
servlet 搞java web开发的人一定不会陌生,而且大家还会时常用到它。
下面是java官方网站上对servlet的介绍: java官网对于servlet的解释 写道
Java Servlet Technology Overview Servlets are the Java platform technology of choice for extending and enha
- eclipse中安装maven插件
510888780
eclipsemaven
1.首先去官网下载 Maven:
http://www.apache.org/dyn/closer.cgi/maven/binaries/apache-maven-3.2.3-bin.tar.gz
下载完成之后将其解压,
我将解压后的文件夹:apache-maven-3.2.3,
并将它放在 D:\tools目录下,
即 maven 最终的路径是:D:\tools\apache-mave
- jpa@OneToOne关联关系
布衣凌宇
jpa
Nruser里的pruserid关联到Pruser的主键id,实现对一个表的增删改,另一个表的数据随之增删改。
Nruser实体类
//*****************************************************************
@Entity
@Table(name="nruser")
@DynamicInsert @Dynam
- 我的spring学习笔记11-Spring中关于声明式事务的配置
aijuans
spring事务配置
这两天学到事务管理这一块,结合到之前的terasoluna框架,觉得书本上讲的还是简单阿。我就把我从书本上学到的再结合实际的项目以及网上看到的一些内容,对声明式事务管理做个整理吧。我看得Spring in Action第二版中只提到了用TransactionProxyFactoryBean和<tx:advice/>,定义注释驱动这三种,我承认后两种的内容很好,很强大。但是实际的项目当中
- java 动态代理简单实现
antlove
javahandlerproxydynamicservice
dynamicproxy.service.HelloService
package dynamicproxy.service;
public interface HelloService {
public void sayHello();
}
dynamicproxy.service.impl.HelloServiceImpl
package dynamicp
- JDBC连接数据库
百合不是茶
JDBC编程JAVA操作oracle数据库
如果我们要想连接oracle公司的数据库,就要首先下载oralce公司的驱动程序,将这个驱动程序的jar包导入到我们工程中;
JDBC链接数据库的代码和固定写法;
1,加载oracle数据库的驱动;
&nb
- 单例模式中的多线程分析
bijian1013
javathread多线程java多线程
谈到单例模式,我们立马会想到饿汉式和懒汉式加载,所谓饿汉式就是在创建类时就创建好了实例,懒汉式在获取实例时才去创建实例,即延迟加载。
饿汉式:
package com.bijian.study;
public class Singleton {
private Singleton() {
}
// 注意这是private 只供内部调用
private static
- javascript读取和修改原型特别需要注意原型的读写不具有对等性
bijian1013
JavaScriptprototype
对于从原型对象继承而来的成员,其读和写具有内在的不对等性。比如有一个对象A,假设它的原型对象是B,B的原型对象是null。如果我们需要读取A对象的name属性值,那么JS会优先在A中查找,如果找到了name属性那么就返回;如果A中没有name属性,那么就到原型B中查找name,如果找到了就返回;如果原型B中也没有
- 【持久化框架MyBatis3六】MyBatis3集成第三方DataSource
bit1129
dataSource
MyBatis内置了数据源的支持,如:
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<data
- 我程序中用到的urldecode和base64decode,MD5
bitcarter
cMD5base64decodeurldecode
这里是base64decode和urldecode,Md5在附件中。因为我是在后台所以需要解码:
string Base64Decode(const char* Data,int DataByte,int& OutByte)
{
//解码表
const char DecodeTable[] =
{
0, 0, 0, 0, 0, 0
- 腾讯资深运维专家周小军:QQ与微信架构的惊天秘密
ronin47
社交领域一直是互联网创业的大热门,从PC到移动端,从OICQ、MSN到QQ。到了移动互联网时代,社交领域应用开始彻底爆发,直奔黄金期。腾讯在过去几年里,社交平台更是火到爆,QQ和微信坐拥几亿的粉丝,QQ空间和朋友圈各种刷屏,写心得,晒照片,秀视频,那么谁来为企鹅保驾护航呢?支撑QQ和微信海量数据背后的架构又有哪些惊天内幕呢?本期大讲堂的内容来自今年2月份ChinaUnix对腾讯社交网络运营服务中心
- java-69-旋转数组的最小元素。把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素
bylijinnan
java
public class MinOfShiftedArray {
/**
* Q69 旋转数组的最小元素
* 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。
* 例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1。
*/
publ
- 看博客,应该是有方向的
Cb123456
反省看博客
看博客,应该是有方向的:
我现在就复习以前的,在补补以前不会的,现在还不会的,同时完善完善项目,也看看别人的博客.
我刚突然想到的:
1.应该看计算机组成原理,数据结构,一些算法,还有关于android,java的。
2.对于我,也快大四了,看一些职业规划的,以及一些学习的经验,看看别人的工作总结的.
为什么要写
- [开源与商业]做开源项目的人生活上一定要朴素,尽量减少对官方和商业体系的依赖
comsci
开源项目
为什么这样说呢? 因为科学和技术的发展有时候需要一个平缓和长期的积累过程,但是行政和商业体系本身充满各种不稳定性和不确定性,如果你希望长期从事某个科研项目,但是却又必须依赖于某种行政和商业体系,那其中的过程必定充满各种风险。。。
所以,为避免这种不确定性风险,我
- 一个 sql优化 ([精华] 一个查询优化的分析调整全过程!很值得一看 )
cwqcwqmax9
sql
见 http://www.itpub.net/forum.php?mod=viewthread&tid=239011
Web翻页优化实例
提交时间: 2004-6-18 15:37:49 回复 发消息
环境:
Linux ve
- Hibernat and Ibatis
dashuaifu
Hibernateibatis
Hibernate VS iBATIS 简介 Hibernate 是当前最流行的O/R mapping框架,当前版本是3.05。它出身于sf.net,现在已经成为Jboss的一部分了 iBATIS 是另外一种优秀的O/R mapping框架,当前版本是2.0。目前属于apache的一个子项目了。 相对Hibernate“O/R”而言,iBATIS 是一种“Sql Mappi
- 备份MYSQL脚本
dcj3sjt126com
mysql
#!/bin/sh
# this shell to backup mysql
#
[email protected] (QQ:1413161683 DuChengJiu)
_dbDir=/var/lib/mysql/
_today=`date +%w`
_bakDir=/usr/backup/$_today
[ ! -d $_bakDir ] && mkdir -p
- iOS第三方开源库的吐槽和备忘
dcj3sjt126com
ios
转自
ibireme的博客 做iOS开发总会接触到一些第三方库,这里整理一下,做一些吐槽。 目前比较活跃的社区仍旧是Github,除此以外也有一些不错的库散落在Google Code、SourceForge等地方。由于Github社区太过主流,这里主要介绍一下Github里面流行的iOS库。 首先整理了一份
Github上排名靠
- html wlwmanifest.xml
eoems
htmlxml
所谓优化wp_head()就是把从wp_head中移除不需要元素,同时也可以加快速度。
步骤:
加入到function.php
remove_action('wp_head', 'wp_generator');
//wp-generator移除wordpress的版本号,本身blog的版本号没什么意义,但是如果让恶意玩家看到,可能会用官网公布的漏洞攻击blog
remov
- 浅谈Java定时器发展
hacksin
java并发timer定时器
java在jdk1.3中推出了定时器类Timer,而后在jdk1.5后由Dou Lea从新开发出了支持多线程的ScheduleThreadPoolExecutor,从后者的表现来看,可以考虑完全替代Timer了。
Timer与ScheduleThreadPoolExecutor对比:
1.
Timer始于jdk1.3,其原理是利用一个TimerTask数组当作队列
- 移动端页面侧边导航滑入效果
ini
jqueryWebhtml5cssjavascirpt
效果体验:http://hovertree.com/texiao/mobile/2.htm可以使用移动设备浏览器查看效果。效果使用到jquery-2.1.4.min.js,该版本的jQuery库是用于支持HTML5的浏览器上,不再兼容IE8以前的浏览器,现在移动端浏览器一般都支持HTML5,所以使用该jQuery没问题。HTML文件代码:
<!DOCTYPE html>
<h
- AspectJ+Javasist记录日志
kane_xie
aspectjjavasist
在项目中碰到这样一个需求,对一个服务类的每一个方法,在方法开始和结束的时候分别记录一条日志,内容包括方法名,参数名+参数值以及方法执行的时间。
@Override
public String get(String key) {
// long start = System.currentTimeMillis();
// System.out.println("Be
- redis学习笔记
MJC410621
redisNoSQL
1)nosql数据库主要由以下特点:非关系型的、分布式的、开源的、水平可扩展的。
1,处理超大量的数据
2,运行在便宜的PC服务器集群上,
3,击碎了性能瓶颈。
1)对数据高并发读写。
2)对海量数据的高效率存储和访问。
3)对数据的高扩展性和高可用性。
redis支持的类型:
Sring 类型
set name lijie
get name lijie
set na
- 使用redis实现分布式锁
qifeifei
在多节点的系统中,如何实现分布式锁机制,其中用redis来实现是很好的方法之一,我们先来看一下jedis包中,有个类名BinaryJedis,它有个方法如下:
public Long setnx(final byte[] key, final byte[] value) {
checkIsInMulti();
client.setnx(key, value);
ret
- BI并非万能,中层业务管理报表要另辟蹊径
张老师的菜
大数据BI商业智能信息化
BI是商业智能的缩写,是可以帮助企业做出明智的业务经营决策的工具,其数据来源于各个业务系统,如ERP、CRM、SCM、进销存、HER、OA等。
BI系统不同于传统的管理信息系统,他号称是一个整体应用的解决方案,是融入管理思想的强大系统:有着系统整体的设计思想,支持对所有
- 安装rvm后出现rvm not a function 或者ruby -v后提示没安装ruby的问题
wudixiaotie
function
1.在~/.bashrc最后加入
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
2.重新启动terminal输入:
rvm use ruby-2.2.1 --default
把当前安装的ruby版本设为默