Git 笔记系列(三)—— Git常用命令-一览
时间 更新备注
2018-02-28 新建文章
2018-06-08 整理补充
2019-01-18 更新链接

目录

命令

  • workspace: 本地的工作目录。(记作A)
  • index:缓存区域,临时保存本地改动。(记作B)
  • local repository: 本地仓库,只想最后一次提交HEAD。(记作C)
  • remote repository:远程仓库。(记作D)
    以下所有的命令的功能说明,都采用上述的标记的A、B、C、D的方式来阐述。
阅读更多
Git 笔记系列(二)—— Git工作流程
时间 更新备注
2018-02-28 新建文章
2018-06-07 添加白话Git内容
2019-01-18 更新链接

引言

上一篇简单介绍了Git后,这篇来看看使用Git的工作流程吧。

阅读更多
Git 笔记系列(一)—— Git简介
时间 更新备注
2018-02-27 新建文章
2018-06-07 整理补充
2019-01-18 更新链接

引言

Git很多开发团队在使用,但是Git很多强大的特性不一定都很了解,基于以前的使用以及参考Git的博客,将用一系列文章介绍Git, 从原理到常用命令,希望能更好的使用Git, 提高团队开发效率。

阅读更多
Swift初见

Swift初见

一些Swift的学习记录

类型 Type

隐式转换

  1. Swift不允许类型的隐式转换,如果你需要修改一个变量的类型,请显示转换。
1
2
3
let label = "The width is "
let width = 94
let widthLabel = label + String(width)

假如将第三句的String类型去掉,则会报错:

1
2
3
let label = "The width is "
let width = 94
let widthLabel = label + width

阅读更多
Runtime的魔法世界

Runtime一直被一些开发者津津乐道,它强大的API可以帮助你更好的理解OC的运行时机制,也是项目中不可缺少的“黑魔法”。本篇将结合一些优秀的Runtime文章,简单介绍Runtime原理以及其应用。

一、Runtime运行时的机制

  • 对于C语言,函数的调用在编译的时候会决定调用哪个函数。 在编译阶段,C语言调用未实现的函数就会报错。
  • 对于Objective-C的函数,属于动态调用过程,在编译的时候并不能决定真正调用哪个函数,只有在真正运行的时候才会根据函数的名称找到对应的函数来调用。在编译阶段,Objective-C可以调用任何函数,即使这个函数并未实现,只要声明过就不会报错。

  • Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理。这种动态语言的优势在于:我们写代码时更具灵活性,如我们可以把消息转发给我们想要的对象,或者随意交换一个方法的实现等。

  • 这种特性意味着Objective-C不仅需要一个编译器,还需要一个运行时系统来执行编译的代码。对于Objective-C来说,这个运行时系统就像一个操作系统一样:它让所有的工作可以正常的运行。这个运行时系统即Objc RuntimeObjc Runtime其实是一个Runtime库,它基本上是用C和汇编写的,这个库使得C语言有了面向对象的能力。
阅读更多
UIScrollView嵌套的尝试

捕手项目的“发现”模块是基于一个UITableView来实现的,顶部是banner列表,有个tabBar作为tablesectionHeader,但是在底部其实是类似一个首页的横向滚动的多页ScrollView结构。

因为之前是用一个UITableView,所以每次切换下面的多页结构的时候,需要刷新UITableView,而且记录每个页面的滚动位置,即便做了数据缓存,其实这种结构是很消耗性能的,而且代码逻辑都混在一起(发现该类的代码已经达到了1050行╮(╯▽╰)╭),bug容易出现;考虑列表可以抽成ChildVC子页面来实现代码的分散,用横向滚动的UIScrollView放入tabBar所对应的ChildVC的tableView,这样就涉及到今天需要讨论的问题:在UIScrollView中嵌套UIScrollView

一种构思:在加载好mainScrollViewsubScrollView后,如果页面向上滚动,先滚动mainScrollView,等tabBar吸顶时候,mainScrollView停止滚动,subScrollView开始滚动。

这样涉及到mainScrollViewsubScrollView 在滚动或者拖拽时,代理方法ScrollViewDidScroll的监听判断问题,这里为了将逻辑代码分散开,我将subScrollView放在子控制器来管理。这样就监听需要两个UIScrollView在滚动的的偏移量ContentOffset,在临界点时候通知对方,这里使用通知NSNotification来实现通知。

结构简图如下:

UIScrollView

阅读更多
Communication-Patterns【译】

原文:Communication Patterns
Issue 7: Foundation · December 2013
By Florian Kugler

每个应用程序由包含多个或多个松散耦合的对象,这些对象常常需要相互通信才能完成应用的任务。在本文中,我们将介绍所有可用的选项,看看它们在苹果框架中如何使用的示例,最后总结何时使用哪种机制的的最佳实践建议。

虽然这个问题是关于Foundation框架,我们将超出Foundation框架中的部分通信机制–KVONotifications,还准备谈谈delegation, blocks, 还有 target-action

当然,在有些情况下,没有明确的答案说应该使用什么样的模式,而将选择归结为个人偏好问题,但也有很多情况(模式使用)是非常清晰明确的。

在本文中,我们经常使用“收件人”和“发件人”这两个术语,我们指的是在通信模式上下文中的意思,最好用几个例子来解释:表视图是发件人,而它的代理是收件人。一个核心数据管理对象上下文是它发布的通知的发件人,而不管它们是如何接收的。滑块是动作消息的发送者,实现这个动作的应答者是接收者。一个含有遵循KVO属性的对象,在变化的是发件人,而对应的观察者是收件人。明白窍门了吗?

阅读更多
我的读书笔记

最近在豆瓣上读了三本书,内容设计设计模式、数据结构和计算机原理,看完后对底层原理理解更深入些,一些心得摘录到豆瓣的日记中,作为备忘。

FrizzleFur的日记

  1. 《大话设计模式》读书笔记

阅读更多
设计模式 Design Patterns

常见设计模式

App开发过程中,随着业务的不断发展,代码和逻辑不断增加,有时候不得不重构以前的代码,好的架构,利于代码的拓展和重构,下面就简单探讨一下iOS中常见的设计模式吧。

设计模式

阅读更多
八段锦,可以这么萌 【转】

八段锦,是一个优秀的中国传统保健功法。八段锦形成于12世纪,后在历代流传中形成许多练法和风格各具特色的流派,它动作简单易行,功效显著。古人把这套动作比喻为“锦”,意为动作舒展优美,如锦缎般优美、柔顺,又因为功法共为八段,每段一个动作,故名为“八段锦”。整套动作柔和连绵,滑利流畅;有松有紧,动静相兼;气机流畅,骨正筋柔。

阅读更多