Farlanki.

Farlanki.

Swift代码性能优化
Swift作为苹果推出并且大力推动的一种语言,其一出现便受到了极大关注.在看了Understanding Swift Performance和Optimizing Swift Performance,Building Better Apps with Value Types in Swift这几个WWDC session之后,我对swift有了更深入的理解. 三个量度既然要讨论性能优化,那么必须先定义如何衡量一段代码的性能好坏.下面是用来衡量一段程序性能好坏的三个方面: 实例是在堆还是在栈上分配? 当使用实例的时候,需要进行多少的引用计数管理? 当调用实例的方法时,这个方法是被静态调度...
Advanced NSOperactions
Advanced NSOperactions 是WWDC 2015中的一个session.它介绍了一种利用NSOperation分割程序的方法.利用这个方法把一些基本的操作都封装成operation,可以让为程序解耦,同时很好的实现了Don’t Repeat Yourself原则.session中还介绍了一个Demo App.下面是以Demo App为基础对Advanced NSOperactions的一些理解. OperationConditionOperationCondition这个协议定义了实现Condiction必须实现的方法和变量.其中包括: name isMutually...
使用CADisplayLink观察动画
我们经常使用CABasicAnimation实现动画效果,如果要观察动画实现时候的值,应该怎么实现呢?1.使用KVO,提示被观察者在observer被释放之前就释放了.2.使用NSTimer,NSTimer有间隔不稳定的问题.3.使用CADisplayLinkCADisplayLink是一个定时器.和NSTimer不同的是,它是和屏幕的刷新率相同的,比较准确. 12345678910111213141516171819var animation = CASpringAnimation() animation.keyPath = "position.y" ani...
YALContextMenu
YALContextMenu 作为菜单使用的YALContextMenu其实是一个UITableView. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071- (void)showInView:(UIView *)superview withEdgeInsets:(UIEdgeInsets)edgeInsets animated:(BOOL)animated { ...
Swift的面向协议编程
在WWDC 2015中,Dave Abrahams介绍了Swift的面向协议编程. Protocol ExtensionSwift 2增加了一个名为Protocol Extensions的新特性.即对协议进行扩展,为实现协议的种类(类,结构体,枚举类型)提供方法和属性的实现. 提供默认的实现使用 protocol extension 可以为protocol提供默认的方法或者属性的实现.如果遵循protocol的种类对protocol有自己的实现,那么默认提供的实现就会被自己的实现代替. 举个栗子先定义三个类circle,polygon和diagram 123456789101112131...
ViewController转场
在看这篇文章之前,不妨先看看objccn的两篇文章自定义 ViewController 容器转场View Controller 转场 UIViewControllerAnimatedTransitioningUIViewControllerAnimatedTransitioning这个协议要求实现两个方法:- (NSTimeInterval)transitionDuration:(id <UIViewControllerContextTransitioning>)transitionContext- (void)animateTransition:(id<UIViewC...
学习DACircularProgress
DACircularProgress是一个第三方的progressView. 绘制绘制的工作主要在circularProgressLayer里完成. - (void)drawInContext:(CGContextRef)context 1234567CGMutablePathRef trackPath = CGPathCreateMutable(); CGPathMoveToPoint(trackPath, NULL, centerPoint.x, centerPoint.y); CGPathAddArc(trackPath, NULL, centerPoint.x, ce...
学习SDWebImage
SDWebImage是一个第三方图片异步加载库。在需要从网络上加载大量图片的时候使用这个库会十分方便。 流程-sd_setImageWithURL:placeholderImage:options:progress:completed: UIImageView + WebCache使用这个库,一般是调用这个方法,指定了处理的选项,占位图片,处理的block和完成操作时的回调block。 1objc_setAssociatedObject(self, &imageURLKey, url, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 调用了运行时的方法,在...
学习ODRefreshControl
ODRefreshControl是一个刷新的指示器,效果不错. 123456789101112131415161718192021CGFloat verticalShift = MAX(0, -((kMaxTopRadius + kMaxBottomRadius + kMaxTopPadding + kMaxBottomPadding) + offset)); CGFloat distance = MIN(kMaxDistance, fabs(verticalShift)); CGFloat percentage = 1 - (distance / kMaxDistance);...
avatar
Farlanki
一个多头
FRIENDS