项目知识点.Part3
内存管理:
基本数据类型或者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的更多相关文章
- BBS项目知识点汇总
目录 bbs项目知识点汇总 一. JavaScript 1 替换头像 2 form表单拿数据 3 form组件error信息渲染 4 添加html代码 5 聚焦操作 二 . html在线编辑器 三 . ...
- Django项目知识点汇总
目录 一.wsgi接口 二.中间件 三.URL路由系统 四.Template模板 五.Views视图 六.Model&ORM 七.Admin相关 八.Http协议 九.COOKIE 与 SES ...
- 项目知识点.Part1
1. storyboard中添加scrollview: 先添加scrollView,进行约束 添加View 进行约束 相对于scrollView 如果水平滑动:设置vertically in Cont ...
- stylus项目知识点
1.在项目中,引入.sty文件的时候,用来下面方式 @import "~common/stylus/variable.styl" ~ 是stylus的写法,参考https://gi ...
- Django blog项目知识点总结
数据库操作部分 当我们在Django项目中的models.py下写好创建表的代码后.为了创建好这些数据库表,我们再一次请出我的工程管理助手 manage.py.激活虚拟环境,切换到 manage.py ...
- 项目知识点.Part2
1. 取消collectionView头视图重叠情况:以下两种情况效果一样 但是有一点点bug 每次remove之后 需要把视图刷到上面才会显示(后续会改进方法) for (UIView *view ...
- react native定报预披项目知识点总结
1.TextInput组件对安卓的适配问题 textInput 在iOS 显示正常,但是在android下会出现下横线,并且字会被遮盖 因此一般都这么用该组件 <TextInput style= ...
- vue项目知识点总结
一.vue中如何获取select被选中的id和对应的值. <!-- 下拉框 --> <div v-show="moreStore" class="sel ...
- blog项目知识点梳理
1.获取图片验证码: def get_validCode_img(request): # 方式1: # import os # path= os.path.join(settings.BASE_DIR ...
随机推荐
- Qt 线程基础(Thread Basics的翻译,线程的五种使用情况)
Qt 线程基础(QThread.QtConcurrent等) 转载自:http://blog.csdn.net/dbzhang800/article/details/6554104 昨晚看Qt的Man ...
- OC封装的TLV数据格式解析库
作者:朱克锋 邮箱:zhukefeng@iboxpay.com 转载请注明出处:http://blog.csdn.net/linux_zkf TLV是一种可变格式,意思就是: Type类型, Leng ...
- 【设计模式 - 9】之装饰者模式(Decorator)
1 模式简介 装饰者模式允许向一个现有的对象添加新的功能,同时又不改变其结构. 装饰者模式的思路是用"调料"对象将原始对象进行层层包裹,同时其属性.动作层层传递,达到最终 ...
- hdu 2824 The Euler function(欧拉函数)
如果打表的话会超内存,我想到了一种方法解决这个问题.题目给出的数据时3000000,我将三百万分成300个数据,将整万的数据存储下来,计算的时候,先计算x和y之间整万的数据,然后再计算零散数据. 想法 ...
- 再回首,Java温故知新(十一):Java反射
最近继续回顾Java基础,进行到了Java反射这一部分,个人感觉这部分应该算是Java的高级特性了,在日常开发中使用的并不多,应用人员主要是工具构建人员,所以这次学习中以了解为主,Java反射主要应用 ...
- IOS的工程目录结构和生命周期
IOS的工程目录结构和生命周期 ·simple table文件夹:工程相关源代码和配置文件 BIDAppDelegate : 委托的声明和实现 BIDViewController: 视图控 ...
- shell跑一个PHP脚本的简单命令
最近在做一个刷数据库的小功能,需要批量添加到不同的表中,写好PHP文件之后,登录到某一个服务器上面 上传文件的命令:rz 会出现一个弹框可以选择要上传的文件 执行文件并报错误的命令:/usr/loca ...
- order by
- Android开发--推送
需要的知识点:Notification.Service 第三方开源框架 : android-async-http-master 推送的来源:android项目中,有时会有这样一种需求:客户每隔一段时间 ...
- JS计算指定日期是距今的第几周,星期几
无意中在百度知道上发现这样一个问题,就抽时间见写了一个函数. 首先我们需要明确,既然是指定日期距今的第几周,那么就要知道指定的日期是什么,而且是不能确定的,会根据使用者不同而得到不同的日期,所以我们需 ...