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...
lib(a)导致的duplicate-symbol的问题
lib(a)导致的duplicate-symbol的问题链接: iOS lib(.a)库冲突解决办法 iOS 两个静态库存在同名文件冲突解决方案 说明 首先你要确定是这个类型的错误 然后开始,可以按照第一个链接进行修改,也可以看下面 在引入第三方lib(.a)库时,经常会由于第三方lib库中又引入同你现有工程相同的开源代码而造成.o冲突 依次查看lib库所支持的框架类型。i386:模拟器;armv7:iphone4;armv7s:iphone5,iphone5s;arm64:iphone6,iphone6p。 首先,将冲突的那个.a文件单独拷贝到一个文件夹,然后用命令行进入到那个文件夹 查看lib库支持的框架类型,注意下面的lib.a或者libRyFitLibrary.a是我出错的.a文件 12admin-imac:testlib admin$ lipo -info lib.a 2 Architectures in the fat file: lib.a are: armv7armv7s arm64 3 admin-imac:testlib admin$ fa...
MagicalRecord的使用
创建数据库1. 首先分析清楚自己需要什么 我的目的是要缓存信件列表界面,新建列表界面的model就是letter,所以我需要一个Letter的实体(entity),那这个Letter有哪些属性呢?写信的人(sender)、信的内容(content)、信的时间(dateString)、信的已读未读状态(isRead)、发信还是收信(incoming);所以我Letter的entity创建之后是这样: 这样就好了吗,并没有,如果是普通的展示界面,只有letter的实体,这样就足够了;但是对于我的这个项目来说,是展示信件的,是比较私人的,我缓存的信件列表应该只有我能看到,如果别人在我的手机上登陆了呢?因为我没有做区分,所以,当他登入的时候,他能看到我的数据,因为数据是缓存在手机上的! 所以,我需要一个User的Entity,这个User的Entity的目的是:跟Letter绑定,保证每个人都看到自己应该看到的;user有两个attribute:accout和writeName,(正常情况下应该是uid,但是我的这个是比较简单,所以没有uid); 紧接着问题是,Let...
轮播图实现的三种方式
轮播图实现的三种方式假设有5张图片,分别是:12345,实现轮播图 方法1:用scrollView加NSTimer实现,思路:12345五张图片,实现轮播,我添加两张,变成5123451,当滑到最后一个1时,无动画位移回第一个1;当倒着滑到5时,无动画回最后的5。 难点在于:给定数组的个数,及两个边界的判断 方法2:用collectionView加NSTimer实现,思路:12345五张图片,对应collectionView的1个section,即一个section有5个row;至于有多少个section,尽量设置的大一些,eg:100;(collectionView有重用机制)所以不用担心内存问题。 难点在于:滑动的逻辑处理;如果你把section设置的非常大,就不用担心倒着滑的问题,毕竟不是每个人都那么闲。 1234567891011121314151617181920- (void)nextPage:(id)sender { // 1. 得到当前正在显示的cell的indexPath,(只有一个) NSIndexPath *currentI...
实现Button文字(titleLabel)和图片(imageView)上下排列
实现Button文字(titleLabel)和图片(imageView)上下排列 1、我最开始实现这个采用的方法:重新自定义一个view,然后有两个属性label和imageView,然后设置位置布局,再添加单击手势,用代理回传点击方法。 2、第二种方法:自定义一个Button继承Button,有两个属性label和imageView,然后设置布局。这样就不用添加单击手势。 3、第三种方法:直接用Button自带的titleLabel和imageView,写个Category,用来设置label和image的排列方式,eg:上下、左右 明显前两种是很不好的,所以这里只说第三种: Button有两个属性:titleEdgeInsets和imageEdgeInsets,通过设置这两个,就可以实现所有需要的Button的样式,如:image在上、image在下、image在左、image在右。 在设置这两个之前,我们先要理解Button上面的titleLabel和imageView的位置关系(想象Button默认的image和label的显示): titleEdg...
iOS开发——扫码界面实现
类似下面这样一个收款界面的实现 界面分析 黑色半透明背景 navgationBar下面绿色的那个headerView 扫码框,及绿色动态扫码线的实现 扫码框下面的提示文字 黑色背景的实现,可能跟想象的不同,见下图(图中的1/2/3只是标识不同部分,不是顺序),先是需要放一个backView,然后是放中间的扫码框3,再然后上下左右四个1,最后放headerView和提示文字2; 实现