• copy与strong的举例


    //
    //  Student.h
    //  内存计数
    //
    //  Created by 张凯泽 on 16/7/24.
    //  Copyright © 2016年 rytong_zkz. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    @interface Student : NSObject
    @property(nonatomic,strong)NSMutableString *name;
    
    @end
    
    
    //
    //  Student.m
    //  内存计数
    //
    //  Created by 张凯泽 on 16/7/24.
    //  Copyright © 2016年 rytong_zkz. All rights reserved.
    //
    
    #import "Student.h"
    
    @implementation Student
    -(void)setName:(NSMutableString *)name
    {
        if (_name!=name) {
            [_name release];
            _name = [name copy];
        }
    }
    -(void)dealloc{
        [super dealloc];
        NSLog(@"stuent dealloc");
    }
    @end
    //
    //  main.m
    //  内存计数
    //
    //  Created by 张凯泽 on 16/7/24.
    //  Copyright © 2016年 rytong_zkz. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    #import "Person.h"
    #import "Student.h"
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            //Person * p = [[[Person alloc]init] autorelease];
            
            Student * s = [[[Student alloc]init]autorelease];
            NSMutableString * string = [[[NSMutableString alloc]initWithString:@"liss"]autorelease];
            s.name = string;
            NSLog(@"%@------%p",s.name,s.name);
            [string appendString:@"xxxxx"];
             NSLog(@"%@------%p",s.name,s.name);
            /*
             如果在student name属性设置为strong类型
             2016-07-26 21:13:11.126 内存计数[61170:432980] liss------0x100203660
             2016-07-26 21:13:11.127 内存计数[61170:432980] lissxxxxx------0x100203660
             2016-07-26 21:13:11.127 内存计数[61170:432980] stuent dealloc
             因为string是可变类型,它进行改变后name属性也会进行修改。
             
             
             如果在student name属性设置为copy类型
             2016-07-26 21:14:39.204 内存计数[61262:434021] liss------0x7373696c45
             2016-07-26 21:14:39.206 内存计数[61262:434021] liss------0x7373696c45
             2016-07-26 21:14:39.206 内存计数[61262:434021] stuent dealloc
             因为string是可变类型,它进行改变后,因为name属性是copy协议所以不会改变
             */
        }
        return 0;
    }
  • 相关阅读:
    伪类样式
    div 文字超出边框后,省略号显示
    关于常用的 meta
    js数组去重
    异步二进制文件下载
    JJWT现前后端分离身份验证
    ApachePOI快速入门
    axios兼容ie7
    vue解决跨域问题
    log4j模板
  • 原文地址:https://www.cnblogs.com/zkzzkz/p/5708989.html
Copyright © 2020-2023  润新知