zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    表达式目录树(Expression)
    六大设计原则【单一职责】【里氏替换】【 迪米特法则】【依赖倒置原则】【接口隔离原则】【开闭原则】
    lambda,linq
    c#中的特性Attribute
    CentOS7部署Nginx
    NetCore项目的部署
    ABP+NetCore+Vue.js实现增删改查
    Abp数据库迁移注意事项
    MVC分页
    AspNet5 Changes to [Activate] in beta-5
  • 原文地址:https://www.cnblogs.com/zkzzkz/p/5708989.html
Copyright © 2011-2022 走看看