SF
chenjiang3
chenjiang3
注册登录
关注博客
注册登录
主页
关于
RSS
Objective-C block 实现机制
chenjiang3
2018-03-22
阅读 7 分钟
3k
在Objective-C中,block是一个很常见的东西,说白了就是个匿名函数,网上有很多关于block如何使用的文章,讲的都非常精彩,这里主要探讨下block的实现原理。关于如何使用block,请参考网上的教程。
Swift闭包3-逃逸闭包
chenjiang3
2016-10-09
阅读 2 分钟
6.2k
当一个传入函数的闭包在函数执行结束之后才会被调用,这样的闭包就叫做逃逸闭包。如果一个函数的参数有一个逃逸闭包,可以在参数前加@escaping关键字来修饰。
Swift闭包2-尾闭包
chenjiang3
2016-10-09
阅读 1 分钟
4k
假设有这样一个函数:这个函数的最后一个参数是一个闭包,并且,这个闭包表达式很长。如果按照正常的方式来调用这个函数的话,需要在参数里指明这个函数的参数名,然后后面跟着一个闭包表达式。比如下面这种函数:
Swift闭包1-基本概念
chenjiang3
2016-10-09
阅读 2 分钟
2.5k
闭包的就是匿名函数,别的语言也有类似的概念,在Objective-c中就是block,在c++中就是lambdas表达式。闭包可以获取闭包所在的上下文的变量和常量,并在闭包内部使用。在Swift中,全局函数和嵌套函数是特殊的闭包,有3种类型。
iOS求职
chenjiang3
2016-03-07
阅读 1 分钟
2k
感觉公司发展不是很好,最近想换工作,本人iOS程序员,2012年毕业,求收留。邮箱:841346457@qq.comqq: 841346457
core image 入门
chenjiang3
2015-11-29
阅读 8 分钟
4.9k
原文链接:[链接]core image是一个强大的图像处理框架,使用core image可以方便的实现滤镜,比如可以修改图像的形变,色彩和曝光。它使用GPU(或者是CPU)来处理图像数据,所以特别快,可以实时处理视频的每一帧。
AVFoundation编程指南2-用AVPlayer播放视频
chenjiang3
2015-11-27
阅读 11 分钟
31.6k
原文链接:chenjiang3的技术博客控制assets的播放,你可以使用AVPlayer对象。在播放的过程中,你可以使用AVPlayerItem对象来管理asset的呈现,AVPlayerItemTrack来管理track。要显示视频,需要使用AVPlayerLayer。
AVFoundation编程指南1-使用 Assets
chenjiang3
2015-11-26
阅读 9 分钟
12.2k
AVURLAsset初始化方法的第二个参数使用一个dictionary,这个dictionary里的唯一一个key是 AVURLAssetPreferPreciseDurationAndTimingKey,它的value是一个boolean类型(用NSValue包装的对象),这个值表示asset是否提供一个精确的duration。获取asset精确的duration需要很多处理时间,使用一个预估的duration效率比较高...
C++11lambda表达式
chenjiang3
2014-10-03
阅读 1 分钟
4.6k
Lambda表达式是c++11的新特性,它允许程序员在函数内部创建一个匿名函数,对于一些小型的功能模块,可以使用lambda表达式来实现。很多其他语言已经有了lambda表达式,比如objective-c中block就类似。
iOS扩展类属性总结
chenjiang3
2014-09-25
阅读 3 分钟
9.2k
iOS扩展属性:category可以扩展类的方法,但是不能扩张类的属性。如果要扩展类的属性,可以用associative,这个相对于category来说用的比较少,而且他还用到运行时编程,必须使用<obj/runtime.h>,使用objc_getAssociatedObject,objc_setAssociatedObject以及objc_removeAssociatedObjects.这几个方法的生命如下:
iOS 瀑布流的实现方法
chenjiang3
2014-09-23
阅读 1 分钟
4.6k
{代码...}
objective-c消息转发机制
chenjiang3
2014-09-21
阅读 2 分钟
3.5k
1、查找该类及其父类的cache和方法分发表,找不到的情况下执行第2步。 2、执行+(BOOL)resolveInstanceMethod:(SEL)aSEL方法。 3、接下来 Runtime 会调用 – (id)forwardingTargetForSelector:(SEL)aSelector 方法。 这就给了程序员第二次机会,如果你没办法在自己的类里面找到替代方法,你就重载这个方法,然后把消息转给...
好博客搜集
chenjiang3
2014-09-20
阅读 1 分钟
2.1k
本人搜集的一些好博客: 1,twitter的官方博客:[链接] 2、[链接] 3、cocos2dx与lua:[链接] 4、码农人生(音频):[链接] 5、uitableview:[链接] 6、[链接] 7、代码签名:[链接] 8、tableview详解,画图详解:[链接] 9、shell脚本:[链接] 10、autolayout:[链接]
GCD和NSOperation总结
chenjiang3
2014-09-20
阅读 1 分钟
12.2k
GCD和NSOperation的区别 1、GCD是一种轻量级的方法来实现多线程。控制起来比较麻烦,比如取消和暂停一个线程。 2、NSOperation和NSOperationQueue相对于GCD效率上要低一点,他们是面向对象的方式,从Mac OS X v10.6和iOS4开始,NSOperation底层也是用的GCD来实现的。可以在多个操作中添加附属,也可以重用操作,取消或者...
观察者模式
chenjiang3
2014-09-17
阅读 2 分钟
2.3k
参与者: BeObserver(目标,BeObserver): 目标知道它的观察者。可以有任意多个观察者观察同一个目标。 提供注册和删除观察者对象的接口。 Observer(观察者,Observer):为那些在目标发生改变时需要获得通知的对象定义一个更新接口。 相关代码: