NSOperation, NSOperationQueue原理探析

通过GNUstep的Foundation来尝试探索下NSOperation,NSOperationQueue

示例程序

写一个简单的程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

[self configurationQueue];
LDNSOperation *operation = [[LDNSOperation alloc] init];
[self.operationQueue addOperation:operation];
[NSThread sleepForTimeInterval:3];
[operation cancel];

}

-(void)configurationQueue{
self.operationQueue = [[NSOperationQueue alloc] init];
self.operationQueue.maxConcurrentOperationCount = 4;
}

LDNSOperation为NSOperation的子类,重写strat方法

阅读全文

SiriKit

iOS 10,其中一个亮点,SiriKit。让App与Siri之间可以通过Extension来进行交互。

看一下相关术语:

  • Intent:意图
  • Domain:领域

阅读全文

WebKit加载Web page

我们在阅读一个页面之前,webKit要做一些加载的工作,从network加载page和子资源,整个加载中伴随着很多复杂的结构。学习一波,WebCore在WebKit中扮演的角色是什么样的。

WebKit的加载过程分类两类:

  • 加载documents
  • 加载images和scripts

看下面的图片:

阅读全文

WebKit学习之路-入门

接触到这个东西还是在百度校招上,看到要求熟悉WebKit内核,然后一看这个,不行,放弃了对这个岗位的渴望,但是WebKit在我的内心中就留下了。今天也是忽然想在除了iOS的其他领域做一些学习,但是又不想完全的脱离,忽然间就让我想起了WebKit

WebKit虽然有很多的资料,大量的文档,但是庞大的代码体系,并且随着时间的推移,版本的迭代这些文档很多已经失效,对于我这个连前端开发都不会的渣渣来说,学习它简直就像是在做一件跟自己过不去的事情。

这么难就给找一种最有效的方法,没错就是解释给别人听,喷我也好,夸我也好,能看见反馈就会让自己进步。

阅读全文

App Store审核注意点

元数据

  • 把我内容尺度,图标、截图以及预览不符合4+年龄评级的程序将会被拒绝。注意年龄评级
  • 应用内,Android等其他系统不能提及,要用”其他平台”代表
  • 不能包含占位符,未实现功能不能展示
  • App名称,描述,屏幕截图以及预览图《必须》与应用的内容与功能一致
  • App中的视频,图片等信息,必须符合4+年龄评级
  • 应用内的礼包活动要注意,因为包含操纵排名的嫌疑(通过礼包,引导用户打5星)

阅读全文

  • 大家好,我叫LastDays,大三学生,目前在腾讯实习,这是我的Blog,我在这里分享我的学习,
  • 我的微博我在这里分享我的生活,欢迎交流
  • 并且欢迎加入qq群554602551,这里我们一起交流分享

  • 聚划算项目地址:LuaViewSDK

  • 我的简单实现: luaTest

利用Lua实现App动态化方案

因为动态化的东西我第一次看实现方案的源码,而且目前还是大三的学生,缺少很多实践经验说错的地方还请原谅,也希望能指出,被告知。想了很久还是决定写出来,求大神勿喷。

并且我的一个朋友bestswifter写了一篇关于ReactNative源码分析的一品文章,React Native 从入门到原理,感兴趣也可以阅读下。

最近看到很多场对动态化提出了很多技术方案,原因就是客户端的业务需求越来越复杂,尤其是一些业务快速发展的互联网产品,肯定会造成版本的更新迭代跟不上业务的变化,尤其是App Store不确定性的审核,这个时候动态化的想法就自然的产生了。我不知道其他人是如何理解动态化的,但是我觉得,动态化指的就是我们不发布新的版本就可以实现大量的应用内容更新,这里的内容不应该仅仅是一些基本信息,应该涉及到应用的主题框架,甚至是布局,排版等。

因为我自己主要专注iOS,所以本次的源码分析和实现主要围绕iOS进行。

阅读全文

从实践谈iOS生命周期

大三学生党一枚,最近在重新了解下声明周期的概念,看了很多概念性的文章,基本了解了各个状态下会调用哪些地方,但是很想深入了解下在各个状态下,我们可以做那些操作。

个人感觉生命周期无论在Android,还是iOS都是很重要的概念,因为在每个声明周期的状态下我们可以做很多预加载或者处理的操作。因此在这里主要总结下ViewController和AppDelegate中的一些状态。

应用程序的状态

看下这个图:

阅读全文

iOS 开发者如何提高效率

文章出自好朋友bestswifter,如果觉得本文对你有帮助,欢迎转载,只要标明原文出自bestswifter即可。

关于 Mac 工作效率的文章一直层出不穷,然而并非所有内容都适合程序员,比如某些 Unix 命令,其实使用频率非常低。作为一名初级 iOS 程序员,我尝试着和大家分享一些能够切实提高我们开发效率的小技巧。

我是无鼠标主义者,任何需要鼠标的操作在我看来都是极为低效的。Mac 的触摸板非常好用,但是我依然在尝试避免使用触摸板。因为双手保持在键盘区域更适合编程。虽然触摸板不可能被避免(比如浏览网页),但我希望至少在 Xcode 中不使用它。

阅读全文

  • 大家好,我叫LastDays,大三学生,目前在腾讯实习,这是我的Blog,我在这里分享我的学习,
  • 我的微博我在这里分享我的生活,欢迎交流
  • 并且欢迎加入qq群554602551,这里我们一起交流分享

  • 项目地址:LDSImageCache

一直都想写一个关于图片缓存方案的,但是积累不够,一直扔在这,最近开始尝试。就先从我写下载开始分享。

下载

下载的话,我查阅了很多人写的,像SDWebImage,使用的是NSURLConnection,但是我这里准备使用NSURLsession,使用NSURLSessionDataDelegate的代理方法实现下载数据.

说点题外话:我为什么选择NSURLsession二部选择NSURLConnection。因为iOS9之前在做网络连接的时候,我们使用的时NSURLConnection,但是iOS9之后NSURLConnection宣布被弃用了,在2013年的WWDC大会上,苹果就已经设计出NSURLConnection的继任者NSURLSession,他使用起来比NSURLConnection更加简单,更加强大。

在这个过程当中,还会用到GCD与NSOperation来管理下载线程,为什么混合使用呢?我们使用子类化NSOperation来高复抽象我们的下载线程进行抽象化,这样使我们的下载模块更加清晰,在整个不算太复杂的下载过程中,让接口变得简单。GDC我们在下载中局部会使用到,GCD的优点我们都知道,简单,易用,节省代码,使用block让代码变得更加简洁。

基本上使用的东西上面都总结完了,开始进入下载的设计。

阅读全文

递归

递归的概念

最基础的一个算法,递归的作用很强,并且在我们所存在的大自然中递归的现象是很多的,最简单的例子,相信也肯定见过,就是两个镜子相对,镜子中的样子是什么样的?这就是说她允许一个对象以其自身更小的形式来定义自己。

递归是以递归函数来实现的。什么叫递归函数?递归函数就是一种可以调用自身的函数。每一次的调用都可以让数据更加清晰,让我们距离正确的数据更加近,输入变得更加的清晰。

阅读全文