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