代码改变世界

内存管理 对象的初始化及比较 对象内容的描述

2015-12-12 13:16  AB小博客  阅读(207)  评论(0)    收藏  举报

1.init

2.load load只要类所在的文件被引用就会被调用,所有如果类没有被引用进项目,就不会有load调用

3.initialize 是在类或者其子类的第一个方法被调用前调用,即使类文件被引用进来,但是没有使用,那么initialize也不会被调用。

4.new  是alloc init的组合

//
//  main.m
//  内存管理
#import <Foundation/Foundation.h>
#import "Person.h"
//ARC自动管理内存
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //1.alloc分配内存
        Person *per = [[Person alloc]init];
      
        //2.清楚内存
        // C malloc free c++ 构造函数 析构函数 java GC
        //OC  引用计数 (+1) alloc new rerain copy = +1
        //release释放
        //retainCount 计数
       
        NSUInteger count = per.retainCount;
        NSLog(@"count=%lu",count); // 1
        [per release];
         per=nil;
        count = [per retainCount];
        NSLog(@"%lu",count);
    }
    return 0;
}

对象的比较

  hash 比较isEqual 还比较哈希值

  isEqualto 自己制定规则 调用isEqual

compare 字典的顺序

-(BOOL)isEqualTo:(id)object{ //制定比较规则
    Person *per = (Person *)object;//转换成Person类型的
    return [per.name isEqualTo:self.name]&&per.age==self.age; name和age都相等
}

 查看类中的对象内容的描述

     

     Person *per = [[Person alloc]init];
        per.name = @"xiaowang";
        per.age = 18;
//查看类中的对象内容的描述
        NSLog(@"%@",per);


-(NSString*)description{ //类的一个描述
    return [NSString stringWithFormat:@"[%@,%d]",self.name,self.age];
}
2015-12-12 13:15:07.627 内存管理[745:44892] [xiaowang,18]