内存管理:

基本数据类型或者Core Foundation对象都没有引用计数

主线程会自动创建释放池,子线程需要手动创建释放池。

具体的区别:http://www.cnblogs.com/langtianya/p/3722129.html

1. NSString:

retain:始终是浅复制。引用计数每次加一。返回对象是否可变与被复制的对象保持一致。

copy:对于可变对象为深复制,引用计数不改变;对于不可变对象是浅复制,

引用计数每次加一。始终返回一个不可变对象。

mutableCopy:始终是深复制,引用计数不改变。始终返回一个可变对象。

2. NSArray

无论是深拷贝还是浅拷贝,数组的元素都是浅拷贝

真正的深拷贝:归档反归档

3. return是一个单纯的引用计数+1

4. UIButton继承自:

UIButton继承于UIControl,UIControl继承于UIView,UIView没有内部事件,

touchesBegan、touchesMoved touchesEnded  touchesCanclled这四个方法来自于UIView和UIViewController的共同父类:UIResponder

5. 响应者链:

硬件检测到触摸操作,会将信息交给UIApplication,然后开始检测。

(1)响应者链的查询过程:首先系统需要确定是谁点击/触摸了屏幕,这个寻找的过程称为:hit-test view ,按照这个:UIApplication->UIWindow->UIViewController->UIView(检测所有的子视图)顺序往下走,知道找到触摸的UIView ,hitTest:withEvent:返回对应的UIView,这样就找到了第一响应者,确认了触摸位置,完成了响应者链的查询过程。

(2)响应者处理触摸事件:如果第一响应者没有处理事件,那么事件会按照:触摸的子视图->UIView->UIViewController->UIWindow->UIApplication 顺序向下传递,如果一直没有响应者处理,则丢弃触摸事件。

6、使用Xib:

使用Xib时,是需要注册的,目前我掌握的有两种方法:

方法一:

在viewDidLoad方法中进行注册,在后面的设置cell方法中直接使用。

[self.tableView_Recommend registerNib:[UINib nibWithNibName:@"RecommendCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"Recommend_ZN"];

方法二:

在设置cell的时候进行注册。

SingersTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"singerscell"];
if (cell == nil) {
cell = (SingersTableViewCell *)[[[NSBundle mainBundle] loadNibNamed:@"SingersTableViewCell" owner:self options:nil] lastObject];
}

7.自定义cell:

iOS中最常用的就是tableView了吧,一个完整的APP里面可是需要我们各种自定义cell的哦~,所以遇到问题也不奇怪了吧。

经常用xib自定义cell,所以总得试一下代码自定义吧,不然都不会代码写了。代码实现自定义cell时,那么cell中子控件的frame要怎么设置呢:

需要用-(void) layoutSubviews 来实现。(方法已经大写加粗啦~)

- (void)layoutSubviews {
UIView *view_cell = [[UIView alloc] initWithFrame:self.contentView.frame]; view_cell.backgroundColor = [UIColor redColor]; [self.contentView addSubview:view_cell];
}

而 这个-(void) layoutSubviews方法在什么情况下会调用呢,当我们在某个类的内部调整子视图位置时,就会调用。要是写在-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier方法里,那么当你在 tableView的代理方法中返回cell的高度时,并不会修改子控件的大小,本宝宝这样写的,就出现了这样的问题。

8、tableview的头视图

设置tableView的头视图的时候需要:self.tableView.tableHeaderView = view(自己创建的视图)

tableView 的头视图也涉及到重用机制,与cell一样。

9、日期转换为字符串:

NSString *date = [dateFormatter stringFromDate:[NSDate date]];

10、修改UIImageView的颜色:

self.myImageView.image = [[UIImage imageNamed:@"1.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];

self.myImageView.tintColor  = [UIColor redColor];

对,就是这样,就是把UIImageView的渲染方式设置为:UIImageRenderingModeAlwaysTemplate  然后修改tintColor就可以了。

如果其他小伙伴对我写的这篇文章有什么异议,请尽快联系我哦~  方便我修改嘛

项目知识点.Part3的更多相关文章

  1. BBS项目知识点汇总

    目录 bbs项目知识点汇总 一. JavaScript 1 替换头像 2 form表单拿数据 3 form组件error信息渲染 4 添加html代码 5 聚焦操作 二 . html在线编辑器 三 . ...

  2. Django项目知识点汇总

    目录 一.wsgi接口 二.中间件 三.URL路由系统 四.Template模板 五.Views视图 六.Model&ORM 七.Admin相关 八.Http协议 九.COOKIE 与 SES ...

  3. 项目知识点.Part1

    1. storyboard中添加scrollview: 先添加scrollView,进行约束 添加View 进行约束 相对于scrollView 如果水平滑动:设置vertically in Cont ...

  4. stylus项目知识点

    1.在项目中,引入.sty文件的时候,用来下面方式 @import "~common/stylus/variable.styl" ~ 是stylus的写法,参考https://gi ...

  5. Django blog项目知识点总结

    数据库操作部分 当我们在Django项目中的models.py下写好创建表的代码后.为了创建好这些数据库表,我们再一次请出我的工程管理助手 manage.py.激活虚拟环境,切换到 manage.py ...

  6. 项目知识点.Part2

    1. 取消collectionView头视图重叠情况:以下两种情况效果一样 但是有一点点bug 每次remove之后 需要把视图刷到上面才会显示(后续会改进方法) for (UIView *view ...

  7. react native定报预披项目知识点总结

    1.TextInput组件对安卓的适配问题 textInput 在iOS 显示正常,但是在android下会出现下横线,并且字会被遮盖 因此一般都这么用该组件 <TextInput style= ...

  8. vue项目知识点总结

    一.vue中如何获取select被选中的id和对应的值. <!-- 下拉框 --> <div v-show="moreStore" class="sel ...

  9. blog项目知识点梳理

    1.获取图片验证码: def get_validCode_img(request): # 方式1: # import os # path= os.path.join(settings.BASE_DIR ...

随机推荐

  1. iOS开发tips总结

    tip 1 :  给UIImage添加毛玻璃效果 func blurImage(value:NSNumber) -> UIImage { let context = CIContext(opti ...

  2. 如何选择NoSql数据库

    How to choose a No Sql database 介绍了一下怎么选择一个No Sql数据库,下面简单翻译一下重点. No Sql的数据库可以分为如下4类: Key-Value数据库 数据 ...

  3. Javascript UserAgent 获取平台及浏览器信息

    公司最近要做一套类似于百度统计的功能,于是收集整理了其中根据UserAgent获取客户端平台及浏览器信息的资料,不仅仅试用于Javascript,其他语言也可以参考相应正则进行改进.当然,肯定有不足的 ...

  4. XtraReport交叉表自适应行高及最佳列宽

    1.自适应行头的行高,绑定CustomRowHeight事件,代码如下: private Graphics gr = Graphics.FromHwnd(IntPtr.Zero); private v ...

  5. Python3.x爬虫教程:爬网页、爬图片、自己主动登录

    林炳文Evankaka原创作品. 转载请注明出处http://blog.csdn.net/evankaka 摘要:本文将使用Python3.4爬网页.爬图片.自己主动登录.并对HTTP协议做了一个简单 ...

  6. SQLLite 简介

    [1] SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内 ...

  7. MyBatis Tutorial – CRUD Operations and Mapping Relationships – Part 1---- reference

    http://www.javacodegeeks.com/2012/11/mybatis-tutorial-crud-operations-and-mapping-relationships-part ...

  8. EsayUI datagrid 刷新问题

    最近使用esayui 实现前台界面,在对父页面中datagrid列表项进行操作后,如果操作子页面是依附于父页面弹出的窗体,那么调用parent.$("#grid").datagri ...

  9. Java基础知识强化之集合框架笔记42:Set集合之LinkedHashSet的概述和使用

    1. LinkedHashSet类的概述: • 元素有序唯一 • 由链表保证元素有序 • 由哈希表保证元素唯一 2. 代码示例: package cn.itcast_04; import java.u ...

  10. Java基础知识强化之集合框架笔记23:ArrayList的实现原理

    1. ArrayList的实现原理: 这个可以直接参考网友的博客:http://www.cnblogs.com/ITtangtang/p/3948555.html