当前位置: 首页 > news >正文

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;
}

 

转载于:https://www.cnblogs.com/zkzzkz/p/5708989.html

相关文章:

  • 浅谈PHP与Java之Web开发整合技术
  • Notepad++中常用的插件
  • 多个.class 打包成 .jar
  • 当项目出现空闲时候,如何开展软件测试工作?
  • php中调用java类的方法
  • 利用SWFTools工具将pdf转换成swf
  • Thrift-java学习小结
  • Flex:使用FlexPaper显示PDF文档
  • SWFObject2.0两种调用方式
  • 异构SOA系统架构之Asp.net实现(兼容dubbo)
  • Spring核心技术(十一)——基于Java的容器配置(一)
  • 让网站禁止某些邮箱的注册
  • oschina github使用指南
  • VC++ 命名空间
  • 数据库字段类型
  • 【刷算法】从上往下打印二叉树
  • 2017前端实习生面试总结
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • AngularJS指令开发(1)——参数详解
  • Java比较器对数组,集合排序
  • Java多态
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • python_bomb----数据类型总结
  • SegmentFault 2015 Top Rank
  • Selenium实战教程系列(二)---元素定位
  • webpack4 一点通
  • Zsh 开发指南(第十四篇 文件读写)
  • 从0到1:PostCSS 插件开发最佳实践
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 京东美团研发面经
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 通信类
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 物联网链路协议
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 交换综合实验一
  • #define
  • #git 撤消对文件的更改
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (搬运以学习)flask 上下文的实现
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (译)计算距离、方位和更多经纬度之间的点
  • (转)Linq学习笔记
  • (转)大型网站架构演变和知识体系
  • *** 2003
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .net 8 发布了,试下微软最近强推的MAUI
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性