美文网首页
Effective Objective-C 笔记

Effective Objective-C 笔记

作者: 静候花开_ycb | 来源:发表于2017-06-13 16:20 被阅读0次

    1-7条 

    //Objective-C消息型语言,运行时所应该执行的代码室友运行期环境来决定的,使用函数调用的语言则是由编译器决定 对象所占内存总是分配在“堆”,不会分配在“栈”。不能在“栈”中分配OC对象 指向同一地址不拷贝对象,两个变量就会同时指向此对象(内存的值也一样 指向此对象内存地址) Objective-C在运行时才会检查对象类型,接受到消息后,由运行期环境决定执行哪种代码

    //堆中的内存需要直接管理(MRC,ARC)栈上的内存在栈帧弹出时候自动清理,在Objective-C中,有的时候可能碰到不是Objective-C对象 比如CGRect frame(CGRect是结构体)一般保存的都是非对象类型

    //在编译一个使用某个类的文时,不需要知道类的全部细节只需要由个类名就行,就用@class 还可防止循环引用 代理最好分出文件

    //字面量语法方便操作,语法简单 @{} @[] @“” @123; 对象必须是foundation框架才可以,自定义这些类的子类不可这样用(一般也不会这样做)字面量的对象都是不可变的,如果想要可变版本需要copy一份

    //static const 要比 #define 更好 用这种方式定义的常亮带有类型信息 发送通知的时候定义

    extern NSString * const YCNotification;

    NSString *const YCNotification = @"wuqing";

    常量名字最好以类名为前缀 YCNotification 此值会放在全局符号表 可以再定义该常亮的编译器之外使用 其他常亮也是如此 如果要把某常量对外公布 都可以这么搞

    //用枚举表示状态,选项,状态吗, OC中枚举可以用位运算

    typedef enum : NSUInteger {

    Name = 1,

    Age,

    Height,

    } Preson;

    typedef enum : NSUInteger {

    eat = 0,

    work = 1 << 0,

    seeMovie = 1 << 1,

    } PresonDoSomething;

    //理解属性@property

    原子性: 同步锁 读写权限:

    读写:readwrite 拥有getter和setter方法,只读:仅拥有getter方法 可以用这个特质把某个属性公开成只读,然后在class-continuation中重新定义成读写属性

    内存管理语义:assign 纯量类型 int nsinterger cgfloat等

    Strong 拥有关系 强指针

    Weak 非拥有关系 弱指针(不保留新值,也不释放旧值 所指对象呗摧毁属性被清空)

    Copy 与strong类似 但是这种设置方法不保留新值,而是拷贝一份,保护原有的封装性为了在对象不会在不知情的情况下遭到更改

    Unsafe_unretained 和assign相同 但是适用于 对象类型 也表达一种非拥有关系 当目标对象被摧毁,属性值不会自动清空 与weak区别在这里

    在对象内部尽量访问实例变量 懒加载等

    相关文章

      网友评论

          本文标题:Effective Objective-C 笔记

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