2018-4周-iOS工作杂技

作者: Corbin___ | 来源:发表于2018-01-30 09:19 被阅读16次

    2018-4周

    一、objc_getAssociatedObjectobjc_setAssociatedObject

    主要是创建分类的时候用到,但是要注意的是,如果分类创建的属性是NSSArray...之类的,需要创建对象的,那么分类这个属性的get方法应该这样写

    - (NSMutableArray *)array
    {
        NSMutableArray *array = objc_getAssociatedObject(self, @"array");
        if (!array) {
            array = [[NSMutableArray alloc] init];
            self.array = array;
        }
        
        return array;
    }
    
    - (void)setArray:(NSMutableArray *)array
    {
        objc_setAssociatedObject(self, @"array", array, OBJC_ASSOCIATION_COPY_NONATOMIC);
    }
    

    二、mutableCopy和copy

    mutableCopy:浅复制,指针复制
    copy:深复制,内存复制
    总结:

    • mutable contaniner classes:copy、mutableCopy都会create a memery , but the copy return an immutable object
    • imutable contaniner classes:copy don't create a memory , only point to the original object address.

    三、NSDecimalNumber

    NSDecimalNumber is the subclass of NSNumber.
    It is mainly used to solve the lack of precision.

    四、代理要继承<NSObject>协议

    调用代理的可选方法,经常要用到respondsToSelector,这个是<NSObject>协议里面的

    if ([self.delegate respondsToSelector:@selector(ViewControllerBsendValue:)])
        {
            //如果协议响应了ViewControllerBsendValue:方法
            //通知代理执行协议的方法
            [_delegate ViewControllerBsendValue:_textField.text];
        }
    

    五、static、extern、const

    • static关键字修饰局部变量:
      1:当static关键字修饰局部变量时,该局部变量只会初始化一次,在系统中只有一份内存
      2:static关键字不可以改变局部变量的作用域,但是可延长局部变量的生命周期,该变量直到整个项目结束的时候才会被销毁

    • static修饰的全局变量:作用域仅限于当前文件,外部类不可以访问到该变量

    • extern:引用关键字,当某一个全局变量,没有用static修饰时,其作用域为整个项目文件,若是在其他类想引用该变量,则用extern关键字,例如,想引用其他类的全局变量,int age = 10;则在当前类中实现,extern int age;也可以在外部修改该变量,extern int age = 40;,若某个文件中的全局变量不想被外界修改,则用static修饰该变量,则其作用域只限于该文件

    • const修饰的指针不能再次赋值

    int * const p = NULL;
    int a = 20;
    *p = &a; // 编译器报错
    

    六、clipsToBounds

    具体的说,就是当它取值为 YES 时,剪裁超出父视图范围的子视图部分;当它取值为 NO 时,不剪裁子视图。
    默认值为 NO,但是在 UIScrollView 中,它的默认值是 YES,也就是说默认裁剪的。

    七、CGRectGetMinX、CGRectGetMaxX、CGRectGetMinY、CGRectGetMaxY

    • CGRectGetMinX方法的作用得到目前view在当前屏幕中相对于整个View的最小值(位于屏幕的最左边)
      其实 CGRectGetMinX = view.origin.x

    • CGRectGetMaxX方法的作用得到目前view在当前屏幕中相对于整个View的最大值(位于屏幕的最右边)
      其实 CGRectGetMaxX = view.origin.x + view.size.width

    • CGRectGetMinY方法的作用得到目前view在当前屏幕中相对于整个View的最小值(位于屏幕的最上边)

    • CGRectGetMaxY方法的作用得到目前view在当前屏幕中相对于整个View的最大值(位于屏幕的最下边)

    八、故事版的属性不走get、set方法

    相关文章

      网友评论

        本文标题:2018-4周-iOS工作杂技

        本文链接:https://www.haomeiwen.com/subject/rcevaxtx.html