git 分支策略 将要介绍的这个模型不会比任何一套流程内容多,每个团队成员都必须遵守,这样便于管理软件开发过程. 既分散又集中 我们使用的,且与这个分支模型配合的非常好的库,他有一个“真正”的中央仓库.注意,这个库只是被认为是中央仓库(因为Git是一个分布式的版本控制工具,在技术层面没有所谓的中央仓库).我们将会为这个仓库起名为origin,因为所有的Git用户对这个名字都比较熟悉.  每个开发者从origin拉取和推送代码.除了集中式的推送拉取关系,每个开发者也有可能从别的开发者处拉取代码,形…
一.热补丁作用:修复导致崩溃的错误.替换/增加方法.替换原来的界面等等 二.实现手段:JSPatch (使用Objective-C Objective-C和JavaScript jspatch桥.你可以调用任何Objective-C类和方法在JavaScript中的只是其中一小发动机.这使应用程序获取脚本语言的力量:添加模块或更换Objective-C代码来修复漏洞动态).传送门:https://github.com/agelessman/JSPatch 三.Demo: JSPatch导入:拷贝…
终于进行到下了,这是关于Navigation Controllers和Table Views的最后一个例子,稍微复杂了一点,但也仅仅是复杂而已,难度不大,我们开始吧. 如果没有上一篇的代码,可以从这里下载Nav_2 1)第六个subtableview:An Editable Detail Pane打开你iphone上的通讯录,首先看见的是你通讯录中所有的联系人列表,点选一个联系人,就会切换到联系人的详细页面,再点击右上角的编辑按钮,就可以对联系人的内容进行编辑.我们的这个例子与之有点相似之处,首…
前言 市面上绝大部分的APP被打开之后映入眼帘的都是一个美轮美奂的轮播器,所以能做出一个符合需求.高效的轮播器成为了一个程序员的必备技能.所以今天的这篇博客就来谈谈轮播器这个看似简单的控件其中蕴含的道理. 正文  首先我们来分析一下该如何去实现一个类似下图的轮播器(图片数量.URL由服务器返回):   策略一:UIScrollView->UIImageView->NSTimer轮询 这算是常规的策略,但是如果仔细想想,如果服务器返回给你50图片是不是就需要创建50个UIImageView来做容…
浅拷贝:copy操作出来的对象指针直接指向模板的地址.即两个对象公用一块内存地址 #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSString * testStr = @"connor"; NSLog(@"testStr's Address = %p",testStr); NSString * testStrC…
json_parse_it :开始解析,字符串指针从头到尾循环 jk_parse_next_token:获取下个字符的type和length 大部分分隔符长度都是固定1 jk_parse_string:循环移动指针直到结束符号,获取字符串长度 jk_parse_number:获取数字的长度 jk_object_for_token:获取这个节点(type,长度) 判断type jk_cachedObjects:获取string对象 jk_cachedObjects:获取number对象 jk_pa…
一."Black Magic":Method Swizzling 利用 Runtime 特性把一个方法的实现与另一个方法的实现进行替换,也可以用runtime的四维理解——修改Dispatch Table让一个方法的IMP对应到我们指定的IMP上去 二.实例说明:比如我们想要在APP中记录每一个ViewController的出现次数 三.实例分析: 第一种思路就是在ViewController出现的一瞬间(viewDidAppear)我就用记录工具记录一条日志. @implementa…
点语法和@property 知识点 1.setter/getter函数 2.点语法 3.@property语法和属性 ======================================== 一.setter和getter函数 1.setter和getter函数的作用 setter  方法:   修改对象的字段/实例变量 getter 方法:   读取对象的字段/实例变量 setter 方法: 可以带有多个参数,可以同时给多个变量赋值 getter方法: 不带参数,只能返回一个变量的值.…
#import "ViewController.h" @interface ViewController ()<NSURLConnectionDataDelegate> @end @implementation ViewController -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { [self newThreadDelegate2]; } -(void…
#import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutlet UIView *redView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typic…