推送处理
我这两天都在改这么个东西: 需要根据推送消息,在下方的tabbar上显示提示红点。即:接收到推送消息,当点击推送消息时,跳转对应界面;点击程序图标进入程序时,显示提示的小红点。 前记我记得我之前做的推送处理,分为三种情况,这个我记得很清楚,因为我第一次面试在北京的车库咖啡,被人问到了这个问题,但是我没答出来,因为那时候我确实都没做过推送处理;后来进了第一家公司,有个好的产品,然后刚好有这个需求,然后就get了这个技能。 a. 程序在后台,接收到推送消息,点击推送消息,走的是 1234567// 程序在运行时接收到通知- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{ ... [self receivePush:self.userInfo];} b. 程序在前台,接收到推送消息,弹窗提示/直接处理,对应的方法还是 1234567// 程序在运行时接收到通知- (void)appli...
开发中遇到的问题(二)
开发中遇到的问题,分享给大家,有则改之,无则加勉。1. UIScrollView加了category之后导致的手写输入时崩溃的问题—— [UIKBBlurredKeyView candidateList]上周更新的应用,这周上线了,然后昨天旁边的同事告诉我说,友盟上的崩溃信息,崩溃率1%点多了,赶紧查查吧。看了一下发现大部分的崩溃都是这个日志:[UIKBBlurredKeyView candidateList]: unrecognized selector sent to instance…,于是搜了一下 崩溃重现:切换到有输入的地方,点击输入,切换输入法到手写输入法(系统的,第三方的没事),然后输入,输入一个之后,第二个字就会崩溃。 原因:是因为给UIScrollView加了个category,是用于处理点击屏幕的事件的(触摸屏幕回收键盘),之前一直都是这么做的,也没问题,又或者又问题也没人反馈,😓,估计是投诉无门啊。。。。。而且我们测试的时候也没有测试手写输入法,因为没人会想到这还会有什么不同。苹果自己也没想到,所以我们就上线了,然后就有崩溃了。。。这坑爹的 解决:既然...
开发中遇到的问题(一)
刚入职新公司,遇到了几个问题,感觉需要记录一下,顺便分享。问题1 界面和代码对应由于刚入职,所以不知道哪个界面对应的代码是哪里,又加上项目比较老,比较大,如何才能快速找准界面和代码之间对应,这是第一个难题。 做法: 最开始,我是先走一遍app的所有界面,大概知道都有哪些,然后开始看代码命名,根据名字猜测可能是哪个界面,然后验证是否正确。但是随后发现这样很累,而且因为代码比较老,有些类重写了,老的都没有删除,命名又很像,所以有些根本没办法对应;而且这样效率很低,如果项目不大还好,但是项目大,时间又紧,那这样根本就行不通。 然后晚上下班,走在路上的时候,突然想起来之前看到的一篇博客,Method Swizzling 和 AOP 实践,这里面介绍用Method Swizzling来实现给每个界面加统计,然后我就想,既然都能给每个界面加统计了,那肯定也能打印每个界面的信息。所以,我就用Method Swizzling实现替换ViewWillAppear:方法,然后每次界面出现的时候都会打印当前类名。这样我只需要运行app,然后点击界面,然后就会打印当前类。很轻松就能找到界面对应...
莫空面试记2
莫空面试记2面试中被问到一个问题,如果让你统计页面,给每个页面做记录,你会怎么做? 然后我想想说, 以前的我的做法是,在每个界面的viewDidAppear里写记录的那个方法。 现在的我的做法是,声明个基类继承自UIViewController的,然后在这个类里写log的方法,然后所有的界面继承自这个类。 然后问,那要是我的界面有些是继承自UITableViewController呢,我说再写个UITableViewController的基类。那要是还有继承自UICollectionViewControoler、UITabBarViewController呢?然后,我就羞愧了。。。。。 我确实不知道还有什么方法,但是刚刚我在搜索runtime的时候,看到一篇博客,Method Swizzling 和 AOP 实践,泪牛满面。。。一模一样,一模一样,有木有,为什么我早点没有看到呢。 看了之后,感觉我好配合,把前面两种都说出来了 答案大家自己看上面那个链接吧,Method Swizzling 和 AOP这两个之前只是听过,今天算是涨知识了,没白过,嗯,分享给大家。 对了,...
理解Cookie和Session机制
理解Cookie和Session机制(上)https://mp.weixin.qq.com/s?__biz=MjM5NzMyMjAwMA==&mid=403993367&idx=2&sn=d6c11fad63cafb8afaabab51a6507a89&scene=0&key=710a5d99946419d9c2959d68fdaaf9fefb276b1dfb707052e9e1def60ab1db9691f7b24bb43dd723d649e208ef339525&ascene=0&uin=MTI3ODUzOTcwNQ%3D%3D&devicetype=iMac+MacBookPro11%2C1+OSX+OSX+10.11.4+build(15E65)&version=11020201&pass_ticket=Q0hsg2ISdQypn0956Ro2s%2B6VV2Sd%2Fk9qG1eG4JdFJkvBwNb6grOfLnMgdhoF%2FthT 理解Cookie和Session机制(下)http...
iOS面试必备
备忘 内存管理 推送原理 viewController的生命周期,app的生命周期 事件响应链与传递链 数据库语句、CoreData 多线程 Runtime Runloop 动画 git、SVN 自动布局的实现,Masonry ReactiveCocoa
莫空面试记1
莫空面试记1下午去b站面试,被问了一个关于内存管理的问题,问了好多,但就这个印象深刻,因为其它的不会的就算了,或者忘记的也有情可原。但这个问题答称一坨屎就太揪心了。(满满的都是泪啊) 回来的路上手机没电了,然后就想起来这个,想想,我擦,我好像知道这个是什么,再想想,我果然知道,再想想自己当时说的,我想静静 看问题吧,理解就好,不要说格式错了,大概就这个 123456@AutoreleasePool { A = [[A alloc] init]; B = [[B alloc] init]; A.b = B; B.a = A;} 然后问,这个造成循环引用了吗,哪一步造成了,能给我解释一下吗? 然后我解释成一坨屎,面试官看不下去,说怎么改,就不会循环引用了? 然后我又说一坨屎。 现在想想,我当时怎么会那么说?好像是被吓到了,面试官说的是,假设我是一个没学过OC的人,只会C,然后给我解释一下;然后我就以为问的是高深的问题,然后就激动了。。。。 哎,满满的都是泪,不说了,看我回来的路上想出来的答案。 首先是造成循环引用了,这点是肯定的,然后是哪一步呢,...
iOS相关,过年回来电脑上的证书都失效了
我是转载的,原文链接:iOS相关,过年回来电脑上的证书都失效了,求大神! 我刚刚打包上传,出现这个问题,(图片也是别人的,我的改好了,忘记截图了😓),一直出现这个问题;崩溃啊,过完年第一天,还能不能愉快玩耍了。然后开始Google… 我按照上面的提示进行搜索,搜索出来的是 ,然后看了前两个,重新生成发布的描述文件,还不对,坑爹啊 这时,机智的我,看了一下keychain里的证书,发现是这样的(图还是别人的),擦,什么鬼,我就过个年,证书怎么就这样了,然后我google, 然后,看到第一条,热泪盈眶啊,一小时前,还有比我勤奋的,啊啊啊,救星啊,就是文章开头的那个链接 那么多方法,用哪个?我偷懒,然后用的是这个,然后打包成功了 等等,上传失败(图还是别人的,莫笑) fuck,什么鬼,然后我悄悄的把刚刚改的keychain所有东西再改回来,然后按照这个来修改,上传成功,YES!!! (不要骂我,采纳的这个果然是正确的。。。。) 悄悄的说一句,下面的那个步骤,我没按照一步一步来,我选中证书之后,直接搜索Apple Worldwide,然后出现两...
AutoLayout自适应label出现的问题
我在做最近一个项目,自适应label的时候,总是出现一个问题: 这让我很是郁闷,而且只有在6和6p上出现,开始我以为是我自适应的方式不对,但是重写了几遍之后,发现我没写错。。。。问题在哪,始终找不到. 今天在群里看到一小伙伴发关于自适应label的代码,求教了一下,然后找到了这个VerticallyAlignedLabel,然后兴高采烈的尝试,以为终于要解决了,结果发现,确实是向上对齐了,但是多余的部分还在; 那么问题是在哪?然后我就找啊找啊,然后我发现了这个Multiline UILabel height with Autolayout higher in landscape, stackoverflow上的问题,之前我一直搜中文,但是,搜不出来,换英文之后,终于有相似的问题出现了,我就说,肯定不止我一个人遇到(这么蠢😢),然后还有这个objc.io也出现了Intrinsic Content Size of Multi-Line Text, 然后我打算照着他们的方法修改; 他大爷的,我都没办法直接用他们的方法,因为我把view摘出来了,而且还是tableViewc...
动画效果:snapshotViewAfterScreenUpdates的使用
动画动画:复杂动画的实现:首先要拆分,明确你自己要实现的效果是什么,然后开始拆分,第一步实现什么,然后实现什么…,怎么样链接起来。把复杂的动画拆分成一个个小步骤,然后一步步实现就可以了。 snapshotViewAfterScreenUpdates(_:) 这个方法我在做拖拽tableView的item的时候(eg: SystemPreference)看到的,感觉用来做动画很好用。相当于截个图,然后拿着这个截图,实现各种动画效果。eg: 如果你是一个电商项目,将商品加入购物车,这个动画就可以用这个来实现(Ps:我记得京东还是淘宝久有这个效果,但是我却又找不到了),点击加入购物车,然后对商品生成一个快照,然后缩小移动到购物车(还可以加入旋转的动画),到购物车的位置,移除。Perfect! 我做的这个项目,读信的过程就是用这个效果实现,点击信封,然后生成快照,然后快照位移到屏幕中间,消失,然后信封详情出现。 实现 首先,定义动画效果的实现: 查看信件:a. 点击信件,然后生成信件快照; b.信件快照位移到屏幕中央;同时信件详情出现,信件快照消失; 关闭详情:a...