您的位置:首页 > 移动开发 > IOS开发

IOS学习笔记 ---- 15/08/30之前

2015-08-31 10:57 423 查看
1.IOS的UI先创建的是UiViewController,以便对UIView进行管理,之后在进行创建的是UIView,每个UIView里面再创建不同的UI控件。

2.连接出错,Terminating app due to uncaought exception 'NSUnknowKeyException', reason: '[<ViewController> setValue:forUndefinedKey:]: this class is not key value coding

3.所有属性和方法声明最好放在ViewController.m文件的类私有扩展里面。

4.transform属性使用CGAffineTransformMakeTranslation()方法进行创建的时候会以初始状态为基准,每次传参数相当于重新赋值,仅仅只是以初始状态作为参照,不进行叠加。可以使用自增或自减的变量作为参数或者使用CGAffineTransformTranslate(),它使用当前的transform作为参数然后返回一个新的transform,可以实现叠加。

5.transform的旋转也是同样的使用CGAffineTransformMakeRotation()方法只能有效一次。同上对应方法为CGAffineTransformRotate()。

6.同样的transform也拥有放大缩小功能,使用的是CGAffineTransformMakeScale和CGAffineTransformScale方法。参数是x,y的比例,以1为原始比例。

7.copy : NSString; strong : 一般对象; weak : UI控件; assign : 基本数据类型;

8.storyboard用来描述整个软件的界面,xib用来描述局部的软件界面。

9.property的括号内每个字段的作用
assign:简单复制,不更改索引计数(Reference Counting),对应基础数据类
copy:建立一个索引计数为1的对象,然后释放旧的对象,对应NSString
retain:释放旧的对象,将对象的值赋予输入对象,再提高输入对象的索引计数为1,对应其他NSObject和其子类
weak和strong的区别:当一个对象不在有strong型的指针指向它的时候,会被释放,即使有weak型的指针指向它。一但最后一个strong类型指针离去,所有剩余的weak型指针都会被清除。
copy和strong的区别:1.copy建立的是一个相同的对象,而retain不是。2.copy是内容拷贝,retain是指针拷贝。3.copy是内容的拷贝,对于NSString是这样,但是如果是NSArray类型的,则只是copy了指向array中元素的指针,即“浅复制”。
atomic和nonatomic:atomic是一种线程保护技术,防止在写未完成的时候被另一个线程读取,如果没有使用多线程则可以开启nonatomic。

10.方法前面加好减号的作用????

11.xcode自定义代码段@property (nonatomic, retain) <#type#> *<#name#>;
选中我们刚刚输入的那段代码,把它拖到Code Snippets Library中。
滚动到Code Snippets Library的最底部,找到一个花括号上面带个“User”文字的图标。
单击那个图标,会弹出一个窗口。然后点击窗口底部左边的Edit按钮
在Title和Completionshortcut这两项中,输入代码片段的标题和快捷键。快捷键用于激活代码提示,标题则会显示在代码提示中。此例中,我们输入标题为“Objective-C @property retain”,快捷键为“@property ”。
选择对应的platform、language和Completion scope。然后点击“Done”按钮。
此例中,platform我们选All;language选Objective-C;Completion scope选Class Interface Methods。
Completion scope指定了激活代码提示的快捷键的有效的区域,比如这里我們选的Class Interface Methods就是说明这段代码的快捷键在声明类方法的区域才能激活代码提示;在其他任何区域,无论怎么敲这个快捷键,都不会出现这段代码的提示。

12.ScrollView代理的实现:1.在某个类实现协议UIScrollViewDelegate。2.在该类可以实现代理中optional的方法。3.设置ScrollView.delegate = 该类。
好处:可以让一个对象A监听对象B状态的改变,等同于对象A通知对象B自己状态的改变。

13.OSI七层模型:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层
TCP/IP四层模型:主机到网络层,网络连接层,传输层,应用层

14.UiTableView可以直接设置rowHeight属性来设置统一的行高。
而使用delegate协议实现heightForRowAtIndexPath方法则可以针对行号来设置行高。

15.UITableView在使用numberOfRowsInSection的时候会出现内存问题,因为该方法会在cell进入屏幕显示范围的时候进行调用,而如果一个对象多次进入屏幕显示范围,则该方法会给该数据多次开辟空间,虽然离开屏幕范围的cell会自动销毁,但是不断得创建销毁会给予cpu压力。正确方法应该是在创建对象的时候去UITableView自带的缓冲池中寻找可用的cell,如果没有找到可用的再开辟空间,如果找到则直接重新覆写属性,在创建以及寻找时需要reuseIdentifier这个属性来辨别不同的cell。寻找的方法为UITableView自带方法dequeueReuseableCellWithIdentifier:

--------------------------------------手动分割线-----------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: