摘要: 0603 block\运行时blockblock的本质是一个指向结构体的指针.运行时要分析clang命令反编译出来的c++代码,就要把一些小括号删掉来分析.因为这些小括号一般都是类型强转.oc底层runtime是通过objec_msgSend这种消息派发机制给一个对象发送消息调用指定的方法的.如下图... 阅读全文
posted @ 2016-01-09 18:16 Andy.Li 阅读(289) 评论(0) 推荐(0)
摘要: 0531 - Autolayout 不仅可以做屏幕适配还可以做系统适配uidynamic 做物理动画.能做的效果如下图:AutolayoutAutolayout 是一种“自动布局”技术,专门用来布局UI界面的.有了Autolayout,请忘记frameAutolayout 要比 Autoresizi... 阅读全文
posted @ 2016-01-09 18:15 Andy.Li 阅读(208) 评论(0) 推荐(0)
摘要: 0520 -KVO如下图所示:(面试可能会问到,你就按照下面的说)注意:NSString类型的成员变量用set方法时,要记得用copy,至于为什么,知道这么用就行了.如下图: 阅读全文
posted @ 2016-01-09 18:12 Andy.Li 阅读(137) 评论(0) 推荐(0)
摘要: 0427深复制/浅复制浅复制:是址引用深复制:是值拷贝下面是解释,如下图:运行时机制runtime1、表象的就是MPMoviePlayer2、深层的是clang -rewrite-objc main.m再简化分析如下:面试回答:什么是runtime?答:程序调用之间的所有东西就是runtime.你用... 阅读全文
posted @ 2016-01-09 18:11 Andy.Li 阅读(152) 评论(0) 推荐(0)
摘要: 0423 - GCD( Grand Central Dispatch)block复习请问,图中输出结果是多少?为什么?答:结果是10.因为在定义block的时候,block会把它前面的要用到的变量做一个内存拷贝,然后block执行的时候就从内存拷贝中去取值来使用.就像下面这样:GCD的队列和任务GC... 阅读全文
posted @ 2016-01-09 18:10 Andy.Li 阅读(196) 评论(0) 推荐(0)
摘要: 0420 凡是继承了UIResponder的类都可以做响应者 响应事件的传递是由底到高来传递,响应者链条是由高到底来响应相应事件的传递(由底到高 找到正在和用户触摸交互的view)准则:事件由父控件传递给子控件,找到最适合处理这个事件的view来处理.如果父控件不能接收触摸事件,那么子控件就不可能收... 阅读全文
posted @ 2016-01-09 18:05 Andy.Li 阅读(170) 评论(0) 推荐(0)
摘要: 0419任何view默认不支持多点触控,有一个属性设置Multiple Touch,设置为Yes即可支持多点触控触摸移动一个view,让view也跟着动代码关于触摸的一些解释:注意:touchesCancelled:withEvent:方法的产生可能是正触摸的view不见了根据touch的tapCo... 阅读全文
posted @ 2016-01-09 18:03 Andy.Li 阅读(182) 评论(0) 推荐(0)
摘要: 0417创建UICollectionViewCell的Xib方法如下图枚举定义导航跳转方式js跳转到网页指定锚点如下图所示: 阅读全文
posted @ 2016-01-09 18:02 Andy.Li 阅读(152) 评论(0) 推荐(0)
摘要: 0416注意调用关系,如下图:就是initWithCoder:、initWithFrame、setup方法三元组 阅读全文
posted @ 2016-01-09 18:00 Andy.Li 阅读(188) 评论(0) 推荐(0)
摘要: 0414画线、圆和圆弧的第二种方法5中方法画矩形:第二种画图形的方法:之前做的方法都是先把要画的元素缓存到图形上下文CGConteextRef中去,现在第二种方法也缓存到CGPath中去.其实图形上下文本质也是在内部创建一个CGPath,图形上下文把所有的元素先缓存到CGPath中去,然后CGPat... 阅读全文
posted @ 2016-01-09 17:58 Andy.Li 阅读(228) 评论(0) 推荐(0)
摘要: 0413 - Quartz2D使用Quartz2D画图形步骤:(drawRect: 方法 是 在view第一次显示到屏幕上的时候会调用一次.是系统主动去掉用的,不能直接调用.那么问题来了,比如我要通过滑块持续移动界面上画出的一个圆的位置怎么办呢?就要用到了刷帧也叫重绘,可以调用setNeedsDis... 阅读全文
posted @ 2016-01-09 17:56 Andy.Li 阅读(300) 评论(0) 推荐(0)
摘要: 0411UItaBbar的结构每一个数组都有一个方法,那就是下面这个,如下图所示:如果想看系统控件是怎么构成的,那么就采用遍历其子控件的方式来做,如上一图中所示在iOS7及其以后的系统里,控制器ViewController的View都是通栏的,从头到脚.但在iOS6及其以前的系统里控制器ViewCo... 阅读全文
posted @ 2016-01-09 17:49 Andy.Li 阅读(128) 评论(0) 推荐(0)
摘要: 0410在tableViewCell之间添加一根线,通栏iOS应用数据存储的常用方式plist存储文件 plist读取文件 下面是plist存储读取的图解:注意:plist只能存储常见的属性.和Metro中的ApllcaiotnDataSetting存储的格式以及数据类型基本一样偏好设置Prefer... 阅读全文
posted @ 2016-01-09 17:48 Andy.Li 阅读(137) 评论(0) 推荐(0)
摘要: 0408makekeyAndVisible解释一个程序可以有多个Window,但只有一个窗口能够成为主窗口.如图中所示,此时的window2是主窗口.主窗口用处大了.从iOS7开始无论是主窗口还是次窗口,都可以交互,比如文本框输入文字.但在iOS6及其之前的版本,非KeyWindow(非主窗口)是无... 阅读全文
posted @ 2016-01-09 17:43 Andy.Li 阅读(180) 评论(0) 推荐(0)
摘要: 0407UIPickerView、UIDatePicker和UIToolBar请参见视频和代码pch文件#ifdef __OBJC__//在这里面写oc的引用,比如一些oc的头文件或者NSLog的别名定义。如果oc的头文件写在了外面,则会报很多错误,原因就是写在外面的话编译器以为是c语言的头文件,会... 阅读全文
posted @ 2016-01-09 17:40 Andy.Li 阅读(118) 评论(0) 推荐(0)
摘要: 0403QQ列表展开收起的原理更改 numbersOfRowsInSection 的返回的数目,为0则收起group,不为零则为展开.先修改模型数据刷新对应的表格代码如下:这个地方会出现一个问题,由于每次点击虽然将nameView的小三角旋转了MPI2,但因为每次都要刷新一次tableView,这样... 阅读全文
posted @ 2016-01-09 17:37 Andy.Li 阅读(144) 评论(0) 推荐(0)
摘要: 0402通知和代理的区别代理是一对一的,只能是调用实现了协议里的方法,对象作为实现了该方法才能执行方法通知是多对多,它是通过通知中心分发通知要及时移除,如果不及时移除可能会收到多次通知,就好像C#中的事件注册多次一样.也可能(通知中心不会保留被通知的对象)是被通知的对象已经销毁,但通知中心仍保留这个... 阅读全文
posted @ 2016-01-09 17:35 Andy.Li 阅读(185) 评论(0) 推荐(0)
摘要: 0330cell的一些常见属性设置cell右边指示器的类型 设置cell右边指示器的view cell的backgroundView和selectedBackgroundView cell的backgroundColor.但是backgroundView的优先级更高些.一般用backgroundVi... 阅读全文
posted @ 2016-01-09 17:33 Andy.Li 阅读(156) 评论(0) 推荐(0)
摘要: 0329UIScrollView的常见属性及其解释常见属性,如下图: 具体解释,如下图: 喜马拉雅设置的例子代码: 效果 阅读全文
posted @ 2016-01-09 17:30 Andy.Li 阅读(116) 评论(0) 推荐(0)
摘要: 0326Xib:描述软件界面,轻量级,一般用来描述局部界面Xib的获取,如下图所示:xib在我们开发的时候叫xib,但如果运行在我们手机里会生成nib.所以xib和nib两种方法来访问xib 阅读全文
posted @ 2016-01-09 17:28 Andy.Li 阅读(149) 评论(0) 推荐(0)
摘要: 0324创建transformtransform 是形变属性.如下图:如果按照上面的方法来创建的话是这样解释:是相对初始状态来说的,不会在变化后的基础上进行形变.如果要持续变化就要自己去不断改变要变化的tx或者ty的值如果要在当前的transform上直接进行不断改变就要按照下面的写法,如下图所示:... 阅读全文
posted @ 2016-01-09 17:27 Andy.Li 阅读(162) 评论(0) 推荐(0)
摘要: 0323Storyboard连线错误如下图:不允许直接修改对象的结构体属性成员,但允许直接整体修改对象的结构体属性如下图:打印一个控件对象的frame如下图:如果一个控件无论怎么改变它的大小都不起作用,那么就要想到从iOS6开始出现的AutoLayout.这个面试必面 阅读全文
posted @ 2016-01-09 17:23 Andy.Li 阅读(116) 评论(0) 推荐(0)
摘要: 0811ARCARC判断准则:只要没有强指针指向对象,就会释放对象指针指针分两种:强指针:默认情况下,搜有的指针都是强指针弱指针:week修饰(一个是控件,一个是delegate代理)循环强引用的情况参见 iOS学习(一) 注意非arc的情况是retain和assign组合,arc的情况是stron... 阅读全文
posted @ 2016-01-09 17:20 Andy.Li 阅读(180) 评论(0) 推荐(0)
摘要: 0809 - 内存管理,只对oc对象生效. alloc、retain、release、retainCount局部变量是放在栈里面的,oc对象是放在堆里面的。栈里面的内容系统自动回收,而堆里面的内容还在,所以不适用ARC的时候要手动回收这些对象内容如下图所示:对象的基本结构每一个对象内部都有一个引用计... 阅读全文
posted @ 2016-01-09 17:18 Andy.Li 阅读(138) 评论(0) 推荐(0)
摘要: 0808分类的使用注意分类只可以增加方法,不可以增加成员变量分类可以访问原来类中声明的成员变量分类可以重新实现原来类中的方法,但是会覆盖掉原来的方法,会导致原来的方法没法再使用方法调用的优先级:分类-->原来类-->父类多个分类包含同一方法的话,看后编译的方法覆盖先编译的方法类的本质一个对象或者类本... 阅读全文
posted @ 2016-01-09 17:13 Andy.Li 阅读(213) 评论(0) 推荐(0)
摘要: 0807成员变量作用域######如下图所示:这里要注意手写的成员变量/实例变量默认的作用域是private,所以外部指针类型的对象无法直接访问,这起到一定的保护作用.但可以在当前类内部@implementation直接访问.编译器特性@property和@synthesize@property 可... 阅读全文
posted @ 2016-01-09 17:09 Andy.Li 阅读(120) 评论(0) 推荐(0)
摘要: 0805面向对象三大特性封装、继承和多态oc的方法都是在运行过程中才会检测的。编译时方法没实现只会出现警告,运行时出错.如果方法实现了但没有声明,运行时对象仍然可以调用方法不会出错。这是OC中弱语法的表现说白了oc中的弱语法就是因为运行时检测合理性和可用性。编译时不会出错顶多是警告,运行时才警告。这... 阅读全文
posted @ 2016-01-09 17:07 Andy.Li 阅读(134) 评论(0) 推荐(0)
摘要: OC对象的本质就是一个结构体为什么说是个结构体?例如:类里面声明了几个成员变量\实例变量(已添加@plublic),外部对象的指针在访问这个变量的时候是这么写的p->a0804注意oc的全称拼写:Objective-CMac终端Terminal的一些命令cd 切换目录touch 新建一个.m文件op... 阅读全文
posted @ 2016-01-09 17:02 Andy.Li 阅读(263) 评论(0) 推荐(0)