zoukankan      html  css  js  c++  java
  • 项目知识点.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就可以了。

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

  • 相关阅读:
    基本IO流
    解决重载logf4j2配置文件问题
    vue-element-admin(1)
    asp.net 获取客服端ip,服务端ip
    页面传值
    C#基本语法复习-使用索引器
    C#基本语法复习-属性
    C#基本语法复习-使用垃圾回收和资源管理
    C#基本语法复习-创建接口和定义抽象类
    C#基本语法复习-使用继承
  • 原文地址:https://www.cnblogs.com/Evelyn-zn/p/5116812.html
Copyright © 2011-2022 走看看