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]
时间: 2024-10-04 16:18:53