• Effective Objective-C 2.0学习记录(二)


    对于NSString,NSNumber,NSArray,NSDictionary使用字面语法

    NSString *str = "Lawrence"; 
    //优于
    NSString *str = [[]NSString alloc] initWithString:@"Lawrence"];
    
    NSNumber *one = @1; 
    //优于 
    NSNumber *one = [NSNumber numberWithInteger: 1];
    
    NSArray *array = @[@"one", @"two", @"three"];
    NSDictionary *dictionary = @[@"firstKey": @"first", @"secondKey": @"second", @"thirdKey": @"third"];
    

    数组和字典中的数值不可以有nil值。
    使用字面量语法创建出来的对象,是不可变的(immutable),如果想要可变的版本,需要拷贝一份,

    NSMutableArray *mutableArray = [@[@1, @2, @3, @4] mutableCopy];
    

    尽量不用#define去定义常量,尽量不要在头文件中定义常量
    const仅仅用来修饰右边的变量(基本数据变量p,指针变量*p)

    使用枚举变量表示状态,选项,状态码

    属性特质
    1.原子性,atomic/nonatomic,原子性,在并发编程中,如果某操作具备整体性,系统其他部分无法查看其中间过程的临时结果,只能看到初始值和结束值,那么这个操作就是原子性的
    通过加锁,确保原子性。在iOS中,atomic使用会有较大的性能开销,也不能完成确保线程安全。
    2.读/写权限, readwrite和readonly
    3.内存管理语义
    a) assign,设置方法,只针对scalar type(如CGFloat, NSInteger等)
    b) strong,拥有关系,为这种属性设置新值后,设置方法会先保留新值,并释放旧值,然后再将新值设置上去
    c) weak,非拥有关系,设置新值时,既不保留新值,也不释放旧值。属性所指对象被destroy时,属性值也会情况(nil out)
    d) unsafe_unretained
    e) copy,拥有关系,设置方法并不保留新值,而是拷贝新值。当属性类型为NSString时,经常使用此特性保证其封装性。
    4.方法名,getter=

    很简单,假如有一个NSMutableString,现在用他给一个retain修饰 NSString赋值,那么只是将NSString指向了NSMutableString所指向的位置,并对NSMUtbaleString计数器加一,此时,如果对NSMutableString进行修改,也会导致NSString的值修改,原则上这是不允许的. 如果是copy修饰的NSString对象,在用NSMutableString给他赋值时,会进行深拷贝,及把内容也给拷贝了一份,两者指向不同的位置,即使改变了NSMutableString的值,NSString的值也不会改变.所以用copy是为了安全,防止NSMutableString赋值给NSString时,前者修改引起后者值变化而用的.

    在对象内存尽量直接访问实例变量,属性访问,self.instance,直接访问,_instance
    读取时使用直接访问,写入数据是使用属性访问
    懒加载,必须通过属性访问

    - (Person *)person {
    	if (!_person) {
    		_person = [Person new];
    		...
    	}
    	return _person;
    }
    

    对象等同性,

    //You need to implement -isEqual: and -hash methods for your Request class.
    -(BOOL)isEqualTo:(Object *)object;  -(NSUInteger)hash;
    
  • 相关阅读:
    嵌入优酷视频
    简单字符串处理
    随机生成一个大写字母
    生成二维码
    【计算机网络(谢希仁)-读书笔记】5.2 用户数据报协议UDP
    【计算机网络(谢希仁)-读书笔记】5.1 运输层协议概述
    【计算机网络(谢希仁)-读书笔记】4.6 IP多播
    【计算机网络(谢希仁)-读书笔记】4.5 因特网的路由选择协议
    【计算机网络(谢希仁)-读书笔记】4.4 网际控制报文协议ICMP
    【计算机网络(谢希仁)-读书笔记】4.3 划分子网和构造超网
  • 原文地址:https://www.cnblogs.com/horo/p/8998624.html
Copyright © 2020-2023  润新知