项目中知识点的总结

本文总结了iOS开发过程中的常见问题与解决方法,包括视图加载、UIScrollView滚动、屏幕适配、控制器切换、plist文件操作、数据缓冲机制等核心技术点。通过详细解析,旨在帮助开发者提高iOS应用开发效率与质量。

新浪微博知识点总结:http://www.cnblogs.com/needly/p/3401161.html


1、在加载view的时候,如果不能显示:

(1)是否设置宽高,如果设置,打印出来看看是否没有值;

(2)位置对不对;

(3)hidden检查是否设置为YES;

(4)没有添加到控制器view上;

(5)资源文件是否加载到项目当中;


2、 一个UIScrollView无法滚动:

 (1)contentSize没有值

 (2)不能接收到触摸事件

一个控件无法跟用户交互(无法接收事件)的可能原因

* (父控件的)userInteractionEnabled =NO;

* (父控件的)hidden =YES

* (父控件的)alpha <=0.01

* (父控件的)背景是clearColor



3、屏幕适配:

(1)使用主屏幕的比例进行位置和大小的设置;

(2)使用[[UIScreenmainScreen]bounds].size获取到的是整个屏幕的宽高;

 使用[UIScreenmainScreen].applicationFrame.size获取到去掉状态栏的宽高,起始坐标是(0,20);

 使用navigationController,得到的view的frame是从(0,0)开始的;


4、设置位置已经固定的bounds的方法,有以下两种:

            start.bounds = CGRectMake(0, 0, startNormal.size.width, startNormal.size.height);

            start.bounds = (CGRect){CGPointZero, startNormal.size};//与上面一句的作用相同


5、只要是继承UIControl,就会有四个状态:

UIControlStateNormal:正常状态

UIControlStateHighlight:高亮状态,人工控制,长按控件达到这个效果

UIControlStateSelected:被选中,代码控制,selected = YES

UIControlStateDisable:失效,不可用(代码控制,enable=NO)


6、控制器之间的切换方式:

(1)push方法,即用导航控制器,使用栈的方式。

特点:1.带有返回按钮;

   2.之前的控制器不能销毁(因为栈有“先进后出”的特性)

(2)模态(Modal)

特点:是由上一个控制器来控制这个控制器的弹出

例如iphone通讯录管理程序中,追加新的通讯纪录时,就是使用这种模态画面

7、将 .plist文件中的一个子种类取出来的程序方法

 // 在bundle中取出地址

    NSURL *url = [[NSBundlemainBundle]URLForResource:@"more"withExtension:@".plist"];

    NSArray *array = [NSDictionarydictionaryWithContentsOfURL:url][@"zh_CN"];//取出里面名字为zh_CN的类别

    [array writeToFile:@"/Users/apple/Desktop/More.plist"atomically:YES];//将数组写道文件中


8、objc_msgSend函数传递对象的时候64位和32位兼容的问题:

32位上直接:

id value = ...;
objc_msgSend(self, selector, value);

64位上需要使用:

id value = ...;
int (*action)(id, SEL, id) = (int(*)(id, SEL, id))objc_msgSend;
action(self, selector, value);

9、

IOS回调机制

监听到的某个状态,通知控制器的三种方法:

(在对象之间的通讯)

block:一对一

    1> 所有代码集成在一起,便于维护,便于书写

    2> 适合于少量的协议方法,如果方法过多,开发难度会直线上升

    3> 没有@optional描述符


代理:一对一

   1> 必须针对每一个方法,去编写具体的实现,在开发时会上下切换代码

    2> 对于复杂对象的开发,使用代理协议,通常便于调试和扩展

    3> 使用@optional描述符,可以指定方法不一定被实现


消息通知:一对多

详细讲解:http://www.apkbus.com/android-142353-1-1.html

10 、数据列表中的[]:表示数组,使用NSArray[关键字]取出;

{}:表示字典,使用for in循环取出每个字典转成模型数据;

11、导航栏的半透明度设置:

bar.translucent =NO;//去掉导航条的半透明


12、数据缓冲机制:方法的网址:https://github.com/dominikkrejcik/Objective-C-Stack---Queue

(1)使用队列的方法:先入先出的原则;

(2)使用栈的方式:先入后出的原则;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值