property测试代码:
- //
- // main.m
- // TestVar2
- //
- // Created by lishujun on 14-9-4.
- // Copyright (c) 2014年 lishujun. All rights reserved.
- //
- #import <Foundation/Foundation.h>
- @interface Address : NSObject<NSCopying>
- -(void) toString;
- @end
- @implementation Address
- -(void) toString
- {
- NSLog(@"this is an address");
- }
- -(id) copyWithZone:(NSZone *)zone
- {
- Address *newAddress = [[Address alloc]init];
- return newAddress;
- }
- @end
- @interface Employee : NSObject
- @property (copy) Address *address; // assign, retain, copy
- @end
- @implementation Employee
- @synthesize address;
- @end
- void testAssignAndRetain()
- {
- // 创建他们应该都是1
- Address *address = [[Address alloc]init];
- Address *address2 = [[Address alloc]init];
- NSLog(@"a1 = %lu", [address retainCount]);
- NSLog(@"a2 = %lu", [address2 retainCount]);
- // 首次赋值看看会不会retain
- Employee *employee = [[Employee alloc]init];
- [employee setAddress: address];
- NSLog(@"a1 = %lu", [address retainCount]);
- NSLog(@"a2 = %lu", [address2 retainCount]);
- // 看看employee.address 和 address还是不是同一个对象
- [employee setAddress:address];
- NSLog(@"obj address is %@" , address);
- NSLog(@"obj employee.address is %@" , employee.address);
- // 再次赋值看看会不会release
- [employee setAddress:address2];
- NSLog(@"a1 = %lu", [address retainCount]);
- NSLog(@"a2 = %lu", [address2 retainCount]);
- // 看看使用的时候会不会retain
- for (int i=; i<; i++) {
- [employee.address toString];
- NSLog(@"a2 = %lu", [address2 retainCount]);
- }
- }
- void testCopy1()
- {
- Address *address = [[Address alloc]init];
- Address *address2 = [[Address alloc]init];
- Employee *employee = [[Employee alloc]init];
- // 看看employee.address 和 address还是不是同一个对象
- [employee setAddress:address];
- NSLog(@"%@" , address);
- NSLog(@"%@" , address2);
- NSLog(@"%@" , employee.address);
- // 看看employee.address 和 address还是不是同一个对象
- [employee setAddress:address2];
- NSLog(@"%@" , address);
- NSLog(@"%@" , address2);
- NSLog(@"%@" , employee.address); //之前的对象被替换
- }
- void testCopy2()
- {
- Address *address = [[Address alloc]init];
- Employee *employee = [[Employee alloc]init];
- [employee setAddress:address];
- // 看看使用对象会不会retain
- for (int i=; i<; i++) {
- //[employee.address toString];
- NSLog(@"address = %lu", [address retainCount]);
- NSLog(@"e.address = %lu", [employee.address retainCount]);
- }
- }
- int main(int argc, const char * argv[])
- {
- @autoreleasepool {
- //testAssignAndRetain();
- testCopy2();
- }
- return ;
- }
property测试代码:的更多相关文章
- iOS开发:XCTest单元测试(附上一个单例的测试代码)
测试驱动开发并不是一个很新鲜的概念了.在我最开始学习程序编写时,最喜欢干的事情就是编写一段代码,然后运行观察结果是否正确.我所学习第一门语言是c语言,用的最多的是在算法设计上,那时候最常做的事情就是编 ...
- 03_MyBatis基本查询,mapper文件的定义,测试代码的编写,resultMap配置返回值,sql片段配置,select标签标签中的内容介绍,配置使用二级缓存,使用别名的数据类型,条件查询ma
1 PersonTestMapper.xml中的内容如下: <?xmlversion="1.0"encoding="UTF-8"?> < ...
- mocha框架下,异步测试代码错误造成的问题----用例超时错误
今天用抹茶(mocha)做个测试,发现有一个测试项目总是超时: describe("DbFactory functions",function(){ it("query ...
- 使用 xunit 编写测试代码
使用 xunit 编写测试代码 Intro xunit 是 .NET 里使用非常广泛的一个测试框架,有很多测试项目都是在使用 xunit 作为测试框架,不仅仅有很多开源项目在使用,很多微软的项目也在使 ...
- .NET单元测试的艺术-3.测试代码
开篇:上一篇我们学习单元测试和核心技术:存根.模拟对象和隔离框架,它们是我们进行高质量单元测试的技术基础.本篇会集中在管理和组织单元测试的技术,以及如何确保在真实项目中进行高质量的单元测试. 系列目录 ...
- mysql锁 实战测试代码
存储引擎 支持的锁定 MyISAM 表级锁 MEMORY 表级锁 InnoDB 行级锁 BDB 页面锁 表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生锁冲突的概率最高,并发度最低.行级锁:开销 ...
- 使用Microsoft Fakes隔离测试代码
在单元测试(Unit Test)中我们遇到的问题之一是:假如被测试组件(类或项目)为A,组件A依赖于组件B,那么在组件A的单元测试ATest中测试A时,也需要依赖于B,在B发生改动后,就可能影响到A的 ...
- 在内核中异步请求设备固件firmware的测试代码
在内核中异步请求设备固件firmware的测试代码 static void ghost_load_firmware_callback(const struct firmware *fw, void * ...
- x264测试代码
建立一个工程,将头文件,库文件加载到工程,测试代码如下:#include <iostream>#include <string>#include "stdint.h& ...
随机推荐
- web dynpro message(备忘用)
DATA lo_api_controller TYPE REF TO if_wd_controller. DATA lo_message_manager TYPE REF TO if_wd_messa ...
- 采用subversion管理iOS资源
1.装和配置subversionserver 在windows server上安装VisualSVN-Server.下载地址http://www.visualsvn.com/server/downl ...
- 三分钟学会缓存工具DiskLruCache
DiskLruCache是一个十分好用的android缓存工具,我们可以从GitHub上下载其源码:https://github.com/JakeWharton/DiskLruCache DiskLr ...
- Java基础知识强化之集合框架笔记58:Map集合之LinkedHashMap类的概述
1. LinkedHashMap类的概述 LinkedHashMap:Map接口的哈希表(保证唯一性) 和 链接(保证有序性)列表实现,具有可预知的迭代顺序. 2. 代码示例: package cn. ...
- wordpress密码生成与登录密码验证
一.研究wordpress时wordpess的密码密码生成与登录密码验证方式很重要 WordPress密码已成为整合的首要目标,如何征服整合,就得了解WordPress密码算法. WordPress系 ...
- 在picture library中取某一图片的大图、小图
public static string GetPicThumbnail(SPFile file, string type) { string thumbnail = "" ...
- 什么是WordPress?
(今天由于好友 肖知虎的 的需求 , 我开始了帮助小虎建站的需求, 就这样开始学习了Wordpress. 这些文章就是为了记录这些我在学习过程当中的心得,和记录下来的文字而已) 什么是WordPre ...
- error: Unable to find vcvarsall.bat while install python library by pip install or python setup.py install.
Python 2.7 会搜索 Visual Studio 2008. 如果你电脑上没有这个版本的话,比如只有: 1.Visual Studio 2010,在cmd里面执行:SET VS90COMNTO ...
- SHELL:Find Memory Usage In Linux (统计每个程序内存使用情况)
转载一个shell统计linux系统中每个程序的内存使用情况,因为内存结构非常复杂,不一定100%精确,此shell可以在Ghub上下载. [root@db231 ~]# ./memstat.sh P ...
- jQuery 效果方法
jQuery 效果方法 下面的表格列出了所有用于创建动画效果的 jQuery 方法. 方法 描述 animate() 对被选元素应用"自定义"的动画 clearQueue() 对被 ...