1.属性的内部实现原理:
assign
retain
copy
2.dealloc释放实例变量
dealloc 的方法 是为了setter方法里面 其实没有释放的实例变量
- (void)dealloc{
    [_name release];
    [_gender release];
    [super dealloc];}
3.便利构造器方法
代码:
+ (instancetype)personWithName:(NSString *)name age:(NSInteger)age
gender:(NSString *)gender{
    Person *p = [[Person alloc]initWithName:name age:age gender:gender];
//    [p release];// 写在上面再return,p变成了野指针
      return [p autorelease];// BingGo正解 MRC
//    [p release];// 写在下面,先return,内存泄漏}
4.collection内存管理
1⃣️:
Person *p1 = [[Person alloc]init];
NSMutableArray *mArr1 =[NSMutableArray array];
 // 将对象加入容器中
[mArr1 addObject:p1];
// p1 会被retain
NSLog(@"%lu",[p1 retainCount]);
2⃣️:
        // 将对象移除容器
         [mArr1 removeObject:p1];
        // p1 会被release
        NSLog(@"%lu",[p1 retainCount]);
        [p1 release];
        p1 = nil;
5多态:父类指针可以指向子类对象
NSString *str = [[NSMutableString alloc]init];// 子类对象,父类指针可以指向
NSLog(@"%@",[str className]);
// 在编译时 NSString
// 在运行时 NSMutableSting
NSLog(@"%@",[str className]);
// 在编译时 NSString
// 在运行时 NSMutableSting
        // NSCFString
🐷意:
( 1 ):
/* 与ARC相比多了.m中的
1⃣️:- (void)dealloc{
[_name release];
[_num release];
[super dealloc];}
和main.m中的
2⃣️:[s1 release];
[s2 release];
s1 = nil;
1⃣️:- (void)dealloc{
[_name release];
[_num release];
[super dealloc];}
和main.m中的
2⃣️:[s1 release];
[s2 release];
s1 = nil;
        s2 = nil;*/
(2):
NSMutableString *ms = @"123".mutableCopy;
 
                     
                    
                 
                    
                 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号