ios7的viewdiddisappear和ios7怎么装ios8的应用viewdiddisappear有什么区别

在 SegmentFault,解决技术问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
一线的工程师、著名开源项目的作者们,都在这里:
获取验证码
已有账号?
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
怎么在点击item 2 的时候 不调用item1的viewDidDisappear方法
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:iOS的一些面试题_陈元江CYJ_新浪博客
iOS的一些面试题
看了一篇文章:一个iOS程序员的BAT面试经验
地址:/9238.html
现基于里面的iOS相关面试题进行总结
1.OC中的load和initialize方法​&
/blog//objective-c-plus-load-vs-plus-initialize/
2.说说你对 block 的理解
(1)block的属性修饰符是copy,这样可以将其从栈上拷贝到堆。(2)在Block的{}体内,是不可以对外面的变量进行更改的,需要在变量前加上__block。(3)block体内调用self时需要在外部这样声明:__weak&ViewController&*weakSelf&=&self;
否则会导致循环引用。
3.说说你对 runtime
(1)动态添加属性(类别可以通过runtime动态添加)。(2)转发消息。
(3)查找缓存方法。(4)方法交换。
​4.说说你对 MVC 和 MVVM
的理解​​
将原先的ViewController层的业务逻辑和页面逻辑代码剥离出来放到ViewModel层中​
建议看南峰子老师的这篇:http://southpeak.github.io/blog//reactivecocoazhi-nan-[?]-:xin-hao/
5.说说 UITableView 的调优
提前计算并缓存好高度(布局),因为heightForRowAtIndexPath:是调用最频繁的方法;
异步绘制,遇到复杂界面,遇到性能瓶颈时,可能就是突破口;
滑动时按需加载,这个在大量图片展示,网络加载的时候很管用!(SDWebImage已经实现异步加载,配合这条性能杠杠的)
看这篇:/ios/68.html​
6.谈谈你对ARC的理解
ARC是编译器特性,注意导致循环的发生,例如delegate要设置为assign,动画如果设置为HUGE_VALL,记得在viewController关闭的时候停止这个animation。
7.KVO 、 Notification 、
delegate 各自的优缺点,效率还有使用场景
​共同点:通知一个对象某个事件的发生。&
Delegate:可以接收协议方法的返回值,因此delegate可以反馈信息给controller。
注意:在delegate-obj被销毁的时候,要把controller的delegate设为nil。否则向已销毁delegate发送消息会crash。
比较麻烦的一点是,比如一个controller里面有多个tableview,他们的delegate都是self,这样区分起来略麻烦。
Notification:不接收通知的反馈。注意:销毁controller时要移调监听。
KVO:比较常用来Modal和View直接,View来监听Modal的变化而做出更改。只能监听属性的变化,不能监听方法的变化。
什么情况适合使用Delegate和Notification呢?
delegate写起来比较麻烦,notification比较简单。notification太多的常量命名导致代码可读性降低,这一点相比之下delegate会更漂亮更易读。
一般情况下的controller信息通讯如果是一对一的话还是比较推荐使用Delegate,但是如果是要通知所有的controller的一对多情形,那么使用Notification会更有效率。
另外如果是属性层的改变,即只需监听数据变化然后改变视图,就是用kvo吧(比如股票)。
8.如何手动通知 KVO​
/okcomp/ImplementKVO
9.Objective-C 中的copy 方法
在OC语法中,提供了Copy语法(Copy +
MutableCopy)用于对象的拷贝。其中很容易混淆的是浅拷贝和深拷贝。所谓浅拷贝,即是地址拷贝,并不产生新的对象,而是对原对象的引用计数值加1。而深拷贝,即是对象拷贝,产生新的对象副本,计数器为1。
10.runtime 中, SEL 和 IMP
的区别​
前者标示方法的名字,后者是函数指针
11.autoreleasepool
的使用场景和原理​
看这里:http://blog.csdn.net/hengshujiyi/article/details/
12.RunLoop 的实现原理和数据结构,什么时候会用到
Run loops是线程的基础架构部分。一个run
loop就是一个事件处理循环,用来不停的调配工作以及处理输入事件。使用run
loop的目的是使你的线程在有工作的时候工作,没有的时候休眠。
/p/37ab0397fec7
13.block 为什么会有循环引用​
block体内调用self时,如果ARC下不声明为__weak的话会导致双方都无法释放。
14.使用GCD 如何实现这个需求:A、B、C 三个任务并发,完成后执行任务 D
(1)任务组dispatch_group_t
(2)信号量​
http://blog.csdn.net/wildfireli/article/details/
​​
15.​NSOperation 和
GCD 的区别
gcd是基于c的底层api,NSOperation属于object-c类。
相对于gcd:1,NSOperation拥有更多的函数可用,具体查看api。2,在NSOperationQueue中,可以建立各个NSOperation之间的依赖关系。3,有kvo,可以监测operation是否正在执行(isExecuted)、是否结束(isFinished),是否取消(isCanceld)。4,NSOperationQueue可以方便的管理并发、NSOperation之间的优先级。gcd主要与block结合使用。
16.CoreData 的使用,如何处理多线程问题
coredata与多线程交互的时候,每个线程都必须拥有一个manager
context对象,一般有两种方式:
1.每一个线程使用私有的manager context,共享一个 persistent store
coordinator
2.每个线程使用私有的manager context和私有的persistent store
coordinator
对于这两种方式,我们比较推荐使用第一钟方式,因为使用第二种方式的会消耗我们更多的内存,所以推荐使用第一种。
CoreData里面还带有一个通知NSManagedObjectContextDidSaveNotification,主要监听NSManagedObjectContext的数据是否改变,并合并数据改变到相应context
17.如何设计图片缓存?​
(1)把图片转为base64的字符串存到数据库中或者plist文件中,然后用到的时候再取出来​&
(2)把图片直接保存到沙盒中,然后再把路径存储起来,等到用图片的时候先获取图片的路径,再通过路径拿到图片
/kf/261.html
18.怎么判断某个cell 是否显示在屏幕上
可以通过获取tableviewcell位置是否在屏幕可视范围内判断
CGRect&rectInTableView&=&[tableView&rectForRowAtIndexPath:indexPath];
​​
CGRect&rect&=&[tableView&convertRect:rectInTableView&toView:[tableView&superview]];&&
http://blog.csdn.net/miemie1320/article/details/
19.进程和线程的区别
http://blog.csdn.net/yaosiming2011/article/details/
20.TCP 与 UDP
区别​
TCP是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。​
UDP是一个非连接的协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。​
/bizhu/archive//2497493.html
21.TCP 流量控制
所谓流量控制就是让发送发送速率不要过快,让接收方来得及接收。利用滑动窗口机制就可以实施流量控制。
原理这就是运用TCP报文段中的窗口大小字段来控制,发送方的发送窗口不可以大于接收方发回的窗口大小。
考虑一种特殊的情况,就是接收方若没有缓存足够使用,就会发送零窗口大小的报文,此时发送放将发送窗口设置为0,停止发送数据。之后接收方有足够的缓存,发送了非零窗口大小的报文,但是这个报文在中途丢失的,那么发送方的发送窗口就一直为零导致死锁。
解决这个问题,TCP为每一个连接设置一个持续计时器(persistence
timer)。只要TCP的一方收到对方的零窗口通知,就启动该计时器,周期性的发送一个零窗口探测报文段。对方就在确认这个报文的时候给出现在的窗口大小(注意:TCP规定,即使设置为零窗口,也必须接收以下几种报文段:零窗口探测报文段、确认报文段和携带紧急数据的报文段)。
22.数组和链表的区别
二者都属于一种数据结构从逻辑结构来看1.
数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费;数组可以根据下标直接存取。2.
链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。(数组中插入、删除数据项时,需要移动其它数据项,非常繁琐)链表必须根据next指针找到下一个元素从内存存储来看1.
(静态)数组从栈中分配空间, 对于程序员方便快速,但是自由度小2. 链表从堆中分配空间, 自由度大但是申请管理比较麻烦
从上面的比较可以看出,如果需要快速访问数据,很少或不插入和删除元素,就应该用数组;相反,
如果需要经常插入和删除元素就需要用链表数据结构了。
​23.UIView 生命周期
/p/85c98a9e93eb
24.如果页面 A 跳转到 页面 B,A 的 viewDidDisappear
方法和 B 的 viewDidAppear 方法哪个先调用?
如果是present的话是B的viewDidAppear先调用,如果是导航栏push的话是A的viewDidDisappear先调用。
博客等级:
博客积分:0
博客访问:48,025
关注人气:0
荣誉徽章:ViewController在App开发中是至关重要的一环,无论是页面的展示和数据之间的交互,ViewController提供了一个框架可以管理和构建App应用。iOS中构建App提供了两种方式一种是ViewController管理比如NavigationController和UITabBarController,另外一种就是我们经常打交道用到的自定义ViewController或者是常用UITableViewController展示我们需要的数据。下面这种苹果官网的图片可以加强理解:
生命周期(LifeCircle)
视图的生命周期其实可以理解为Load-Present-Hidden(加载-展现-隐藏)三个阶段,如果从ViewController中方法中执行的顺序来看,顺序应该是这样的:
loadView&viewDidLoad&viewWillAppear&viewDidAppear&viewWillDisappear&viewDidDisappear&dealloc
loadView:一般情况下不用用到,除非需要重写设置View;
viewDidLoad/dealloc:视图加载完成之后的设置和视图销毁的时候调用;
viewWillAppear/viewWillDisappear:视图即将呈现和视图即将消失;
viewDidAppear/viewDidDisappear:视图展现在屏幕的时候和视图完全消失在屏幕的时候调用,默认不做任何操作;
如果看生命周期的话,网上有很张类似这样的图,具体可以参考下,来源于苹果官网:
可以重写代码看下效果:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSLog(@"viewDidLoad-keso");
-(void)viewWillAppear:(BOOL)animated{
NSLog(@"viewWillAppear-FlyElephant");
-(void)viewDidAppear:(BOOL)animated{
NSLog(@"viewDidAppear");
-(void)viewWillDisappear:(BOOL)animated{
NSLog(@"viewWillDisappear");
-(void)viewDidDisappear:(BOOL)animated{
NSLog(@"viewDidDisappear-/xiaofeixiang/");
viewWillLayoutSubviews和viewDidLayoutSubviews如果使用到自动布局,需要修改自动布局中的约束条件,那么可以在viewWillLayoutSubviews中进行操作,最近遇到一个就是text文本框中文字过多的时候文字不能不能置顶,可以在viewWillDidSubviews中操作:
- (void)viewDidLayoutSubviews {
[self.myTextView setContentOffset:CGPointZero animated:NO];
生命周期中几个方法的调用实际中需要看自己的操作,在正确的地方做正确的事,会事半功倍的,具体需要看自己的熟悉程度~
ViewController切换
切换的目的就是想将合适的内容放到用户的手机屏幕上,呈现出不同的内容也就是我们的目标,一般情况有会有三种方式,联线(Segue),Modal(模态),Push(需要和NavigationController配合使用),自定义的Segue,正常情况下一般会涉及前两种,如果有特别的需求可以研究一下第三种自定义,Push方式之前的文中讲过,本文主要讲一下Modal代码实现的两种方式,如果是非代码凡事Control选择一下Modal即可;
presentViewController方式,最开始加载是一个xib是没有问题的,代码如下:
MainViewController *mainController=[[MainViewController alloc]init];
mainController.modalTransitionStyle=UIModalTransitionStylePartialC
[self presentViewController:mainController animated:YES completion:nil]; 
& &&UIModalTransitionStyleCoverVertical-默认的,从下来,往下去;UIModalTransitionStyleCrossDissolve-渐变出现和消失;
& & UIModalTransitionStyleFlipHorizontal-水平翻转;&UIModalTransitionStylePartialCurl-翻书效果;
FirstViewController对应的View不是xib在StoryBoard中,StoryBoard视图中调用presentViewController如果还是使用上面的初始化方式就是黑屏了,其实换成storyBoard中得instantiateViewControllerWithIdentifier即可~
FirstViewController *firstController=[self.storyboard instantiateViewControllerWithIdentifier:@"FirstViewController"];
[self presentViewController:firstController animated:YES completion:nil];
 很久没写文章,比较浅陋,如有不当,多多指正~
阅读(...) 评论()转载自http://blog.csdn.net/web718/article/details/
viewwillappear是每次视图控制器的视图出现前执行的代码。
(进入每次都会执行)
而viewdidload是每次视图控制器载入是执行的代码。(只执行一次)
比如说:当a视图控制器的视图第一次出现是两个都要执行,但当a被push后有pop回来时,只有viewwillappear执行。
iOS视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear、viewDidDisappear的区别及用途
init-初始化程序 &
viewDidLoad-加载视图
viewWillAppear-UIViewController对象的视图即将加入窗口时调用;
viewDidApper-UIViewController对象的视图已经加入到窗口时调用;
viewWillDisappear-UIViewController对象的视图即将消失、被覆盖或是隐藏时调用;
viewDidDisappear-UIViewController对象的视图已经消失、被覆盖或是隐藏时调用;
viewVillUnload-当内存过低时,需要释放一些不需要使用的视图时,即将释放时调用;
viewDidUnload-当内存过低,释放一些不需要的视图时调用。
本文已收录于以下专栏:
相关文章推荐
viewWillAppear: 
Called when the view is about to made visible. Default does nothing视图即将可见时调用。默认情况下...
iOS视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear、viewDidDisappear的区别及用途...
1.viewWillAppear: 
Calledwhen the view is about to made visible. Default does nothing视图即将可见时调用。默认情况...
转载自:http://blog.csdn.net/weasleyqi/article/details/8090373
iOS视图控制对象生命周期-init、viewDidLoad、viewW...
iOS视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear、viewDidDisappear的区别及用途...
来自:http://blog.csdn.net/silva_831/article/details/
viewWillAppear: 
Called when ...
viewWillAppear: 
Called when the view is about to made visible. Default does nothing视图即将可见时调用。默认情...
viewWillAppear: 
Called when the view is about to made visible. Default does nothing
视图即将可见时调用。默认情...
iOS视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear、viewDidDisappear的区别及用途...
iOS视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear、viewDidDisappear的区别及用途...
他的最新文章
讲师:汪剑
讲师:刘道宽
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)}

我要回帖

更多关于 ios7与ios8的区别 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信