iOS Tips-01
来源:互联网 发布:python asyncio.wait 编辑:程序博客网 时间:2024/05/22 02:07
1.监听文本框修改的3种方式:
1.代理
2.通知 (记得 取消监听)
3.addTarget EditingChanged
2. [self performSegueWithIdentifier: identifier sender:nil] 方法的完整实现过程: //self是来源控制器
1.根据identifier去storyboard中找到对应的线,新建UIStoryboardSegue对象
2.设置Segue对象的sourceViewController(来源控制器)
3.新建并且设置Segue对象的destinationViewController(目标控制器)
4.调用sourceViewController的下面方法,做一些跳转前的准备工作并且传入创建好的Segue对象
(void)prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender;//这个sender是当初performSegueWithIdentifier:sender:中传入的sender
5.调用Segue对象的-(void)perform;方法开始执行界面跳转操作
(1)如果segue的style是push
Ø 取得sourceViewController所在的UINavigationController
Ø 调用UINavigationController的push方法将destinationViewController压入栈中,完成跳转
(2)如果segue的style是modal
调用sourceViewController的presentViewController方法将destinationViewController展示出来
3.重写一些父类方法的时候 记得 super调用一下..比如..-(void)layoutSubviews
4.如果是通过storyboard来创建主窗口. 那么在application:didFinishLaunchingWithOptions: 方法里面并没有设置keyWindow(代码创建的话是在这个方法里面的). (注意:self.windo已经被创建了 只是没有设置为App的keyWindow而已.)
现在可以确定是applicationDidBecomeActive:调用的时候 已经设置了keyWindow
5.applicationWillTerminate: 在程序关闭的时候调用. 但是为什么在最小化程序 然后双击home键然后拖动关闭程序的时候 ,这个方法并没有被调用呢????
因为程序进入后台的时候 默认情况下会进入休眠状态,应用程序里面的所有事件都不接收,当然不可能调用
6.UIView的 init方法会自动调用 initWithFrame: 方法
7.initialize(). 每个类第一次使用的时候 都只会调用一次 initialize.
如果有继承的情况 会怎么样呢? 比如 Student继承自Person.在Person里面重写了initialize方法. 那么在Student类第一次被使用的时候, 首先要找到它的父类 即Person 调用一次initialize,然后调用Student initialize()的方法. 重点: 每个类第一次使用都会调用initialize()的方法
initialize中的代码真的只会调用一次吗? 不一定,当有继承关系的时候,可能会调用多次. 比如 Student继承自Person.在Person里面重写了initialize方法,但是Student并没有重写initialize方法,那么Student就会继承Person的initialize方法.
8.导航控制器下点:
iOS6控制器的点是从导航条下面开始的 若有tabBar,则到tabBar的最上方的点.
iOS7控制器的点是从最上面(0,0)开始的. 不管有没有tabBar 都到最下方的点. (但这是可以控制的,可以让iOS7的点的范围和iOS6相同 self.edgesForExtendedLayout)
在导航控制器下的UITableViewController观察.(若没在导航控制器下的话 不会自动增加64)
在viewDidLoad的时候self.tableView.contentInset.top 还是0
在viewDidAppear的时候 self.tableView.contentInset.top 是64(导航条44+导航条上面状态栏的20) 刚好是导航控制条下面
9.layoutSubviews什么时候第一次调用
viewWillAppear之后 viewDidAppear 之前.
10.在UITableViewcontroller里面 self.view == self.tableView
但是,在UICollectionViewController里面 self.view != self.collectionView.
11.涉及 Interval 单位是秒
12.只有在init开头的构造方法中,才允许对self进行赋值 (比如 initwithName: 是以initwith开头,不允许对self赋值)
13.block代码默认是不能修改外面 对象/基本类型的值的,要想block中的代码能够修改,要在外面的对象/基本类型前面加上 __block
14.类的初始化方法:
1.+(void)load
* 当某个类第一次装载到OC运行时系统(内存)时,就会调用
* 程序一启动就会调用
* 程序运行过程中,只会调用1次
2.+(void)initialize
* 当某个类第一次被使用时(比如调用了类的某个方法),就会调用
* 并非程序一启动就会调用
* 程序运行过程中,可能会调用多次.(为什么? 因为当这个类的子类没有重写initialize的方法的时候.子类会继承父类的intialize方法.这样会导致调用多次)
3.在程序运行过程中:1个类中的某个操作,只想执行1次,那么这个操作放到+(void)load方法中最合适
4.load一定比initialize方法调用的早.但是 load方法里面可能会调用到一些类中的方法, 一旦调用类中的方法,在调用方法之前就会调用initialize(可能导致initialize里面的一些输出比load里面的一些输出要早).
- iOS Tips-01
- ios Tips
- iOS Tips
- iOS Tips
- iOS开发Tips
- iOS tips: @synchronized
- iOS interview tips
- iOS ARC tips
- iOS UserDefault tips
- iOS开发Tips
- iOS内存使用tips
- ios 编程tips
- iOS开发Tips
- IOS开发小Tips
- IOS开发Tips
- IOS开发小Tips
- iOS开发Tips
- iOS - tips 持续更新
- 初识正则表达式
- HDU 5475 An easy problem (暴力||线段树_好题 )
- Hibernate n+1问题
- HDU5478 Can you find it 快速幂取模
- Java的OutOfMemory问题
- iOS Tips-01
- java jsp+servlet文件上传下载、本地及网络资源的下载
- "_stringprep", referenced from:+[LibIDN prepNode:] in LibIDN.o
- 构造所有二叉查找树
- css伪类,a标签的四种状态
- 找出最长递增子序列
- 英语的春天--程序员学英语
- F5负载均衡器的功能介绍
- 关于OCP