2018-04-23

注意:由于idfa会出现取不到的情况,故绝不可以作为业务分析的主id,来识别用户。

因此,IDFA就是用来跟踪广告推广的,而UUID虽然每次不同,但是可以自己手动存入Keychain来进行唯一性的确保,这么说来IDFA就是如果广告商投放的时候使用,而UUID就是自己后台来判断用户是否换了设备,或者信息不一致需要重新登录的业务。

uuid+KeyChain: 手机重置,钥匙串证书过期,更新系统(某些情况下)不是还是会变么

手机重置刷机肯定会变,就好比我们坐牢了,出狱之后不要之前的身份,直接废弃,换个新的身份证,这无法避免的,你把它理解为两个不同的用户,重新绑定就好了。

双击home:applicationWillResignActive
单击home:applicationWillResignActive --> applicationDidEnterBackground
下拉通知栏:applicationWillResignActive
上拉工具栏:applicationWillResignActive
kill App:applicationWillResignActive --> applicationDidEnterBackground --> applicationWillTerminate

  1. 你实现过一个框架或者库以供别人使用么?如果有,请谈一谈构建框架或者库时候的经验;如果没有,请设想和设计框架的public的API,并指出大概需要如何做、需要注意一些什么方面,来使别人容易地使用你的框架你实现过一个框架或者库以供别人使用么?

一般公司都会有核心开发团队和普通开发团队,然后公司的核心业务由核心开发团队写成静态库然后让普通开发团队调用,这样就算普通开发团队离职也带不走公司的核心业务代码。一般核心开发团队是不会离职的。

有静态库自然就有动态库了。这里所谓的静态和动态是相对编译期和运行期的。静态库在程序编译时会被链接到代码中,程序运行时将不再需要改静态库,而动态库在编译时不会被链接到代码中,只有程序运行时才会被载入,所以 hook 别人程序或者说做插件都是运用了 runtime 机制,然后动态库注入修改的

http://blog.51cto.com/13594541/2084331

a.二维码扫描
b.actionSheet AlertView

  1. runtime

a. 获取相关的私有属性 .UITextField占位文字颜色(工具类)
b. 替换方法, 比如按钮点击延迟
c. 字典转模型
d. 给分类动态添加属性

  1. runloop

runloop: 从字面意思看:运行循环、跑圈,其实它内部就是do-while循环,在这个循环内部不断地处理各种任务(比如Source、Timer、Observer)事件。runloop和线程的关系:一个线程对应一个RunLoop,主线程的RunLoop默认创建并启动,子线程的RunLoop需手动创建且手动启动(调用run方法)。RunLoop只能选择一个Mode启动,如果当前Mode中没有任何Source(Sources0、Sources1)、Timer,那么就直接退出RunLoop。

  1. 为什么把NSTimer对象以NSDefaultRunLoopMode(kCFRunLoopDefaultMode)添加到主运行循环以后,滑动scrollview的时候NSTimer却不动了?

nstime对象是在 NSDefaultRunLoopMode下面调用消息的,但是当我们滑动scrollview的时候,NSDefaultRunLoopMode模式就自动切换到UITrackingRunLoopMode模式下面,却不可以继续响应nstime发送的消息。所以如果想在滑动scrollview的情况下面还调用nstime的消息,我们可以把nsrunloop的模式更改为NSRunLoopCommonModes.

  1. git的使用

check out
commit
push
pull
discard all changes

git clone + 远程仓库地址:克隆远程仓库至本地,全部都克隆下来了。

我参与开发的项目的分支一直都是按照这样的规则进行创建的:
master 分支(主分支,无论什么情况下,都要保证主分支的正常运行)
developer 分支(处于开发阶段的分支,正常来说,此分支的的功能要多于 master 分支)
开发人员姓名分支比如我的分支就是 sunxu ,每次在本地进行开发的时候,切换到我自己的分支上进行开发,开发完成、测试完成之后,提交分支到远程仓库,直接进行与 developer 分支的合并,其他人同样如此,都是提交分支到 developer 分支,合并到 developer 分支,最后与 master 分支进行合并

  1. 后端技术掌握情况
    SSH,JFinal

  2. 内存警告

在收到内存didReceiveMemoryWarning的警告时,释放掉一些不再需要的资源,注意编码规范,如一些变量不使用需要及时的释放。避免是占用太多的内存空间,有时需要用空间去换取时间,尽量使用一些高效的算法和数据结构节约内存空间。最后使用一些内存检测工具和代码的静态分析查找内存泄漏和分配(instrument,leaks,allocations)。

//清除SDImageCache内存消耗大户
[[SDImageCache sharedImageCache] clearMemory];

int cacheSizeMemory = 4*1024*1024; // 4MB int cacheSizeDisk = 32*1024*1024; // 32MB NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:cacheSizeMemory diskCapacity:cacheSizeDisk diskPath:@"nsurlcache"]; [NSURLCache setSharedURLCache:sharedCache];

之前图片较多 微博:图片model 大中小

NSTimer 一定要在恰当的地方执行 invalidate,否则会造成内存泄漏,但是用 GCD Timer 就可以绕过这个问题

  1. 自定义collectionView

线性布局, 瀑布流布局, 圆形布局

cell:
每一个cell都对应的有一个UICollectionViewLayoutAttributes来设置他的一些属性, 当我们在修改他对应的UICollectionViewLayoutAttributes的相关的属性的时候, 就间接的实现了对响应的cell的相关属性的修改。
所以我们对collectionViewCell的很多自定义就落在了对相应的UICollectionViewLayoutAttributes上面

UICollectionViewLayout:
要完成collectionView的布局是需要设置他的属性 collectionViewLayout, 当使用storyboard的时候是默认为UICollectionViewFlowLayout, 实际上UICollectionViewFlowLayout是继承自UICollectionViewLayout, 由系统实现的一种collectionView的布局。
所以我们可以继承UICollectionViewLayout来自定义我们想要的布局。

继承自UICollectionViewLayout, 重写prepareLayout(),在这里面我们计算好所有的cell布局

  1. 二分查找
    二分查找优点:
    1.速度快 2.比较次数少 3.性能好

缺点也很明显:
1.必须是一个有序的数组(升序或者降序)
2.适用范围:适用不经常变动的数组

https://www.jianshu.com/p/fa44869316f9

12.冒泡排序
每一轮让第一个数与后面的数进行比较,大的就交换位置,这样每一轮最大的就移动到了最后。
然后第二轮找第二大的数字,移动到倒数第二个位置。

for (int i = 0; i < arr_M.count; ++i) {

    //遍历数组的每一个`索引`(不包括最后一个,因为比较的是j+1)
    for (int j = 0; j < arr_M.count-1; ++j) {
        
        //根据索引的`相邻两位`进行`比较`
        if (arr_M[j] < arr_M[j+1]) {
            
            [arr_M exchangeObjectAtIndex:j withObjectAtIndex:j+1];
        }
        
    }
}

13.选择排序

它的工作原理是每一次从待排序的[数据元素]中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。

NSMutableArray *arr_M = [NSMutableArray arrayWithObjects:@1,@4,@2,@3,@5,nil];

for (int i=0; i<arr_M.count; i++) {
    
    for (int j=i+1; j<arr_M.count; j++) {
        
        if (arr_M[i]<arr_M[j]) {
            
            [arr_M exchangeObjectAtIndex:i withObjectAtIndex:j];
            
        }
        
    }
    
}

NSLog(@"%@",arr_M);
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,470评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,393评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,577评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,176评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,189评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,155评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,041评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,903评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,319评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,539评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,703评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,417评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,013评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,664评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,818评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,711评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,601评论 2 353

推荐阅读更多精彩内容