iOS study Day6 -2 单例模式
来源:互联网 发布:牛牛网络 编辑:程序博客网 时间:2024/06/15 18:34
#import <Foundation/Foundation.h>
#import "ClassA.h"
#import "Singleton.h"
int main(int argc,const char * argv[])
{
@autoreleasepool
{
ClassA *a1 =[[ClassAalloc]init];
ClassA *a2 =[[ClassAalloc]init];
ClassA *a3 = [a2 copy];
NSLog(@"a1 = %@", a1);
NSLog(@"a2 = %@", a2);
NSLog(@"a3 = %@", a3);
Singleton *obj1 = [[Singletonalloc] init];
Singleton *obj2 = [[Singletonalloc] init];
Singleton *obj3 = [obj2 copy];
Singleton *obj4 = [SingletonshareInstance];
NSLog(@"obj1 = %@", obj1);
NSLog(@"obj2 = %@", obj2);
NSLog(@"obj3 = %@", obj3);
NSLog(@"obj4 = %@", obj4);
[a1release],a1 = nil;
[a2release],a2 = nil;
[obj1release],obj1 = nil;
[obj2release],obj2 = nil;
[obj3release],obj3 = nil;
[obj4release],obj4 = nil;
NSLog(@"obj1 = %@", obj1);
NSLog(@"obj2 = %@", obj2);
NSLog(@"obj3 = %@", obj3);
NSLog(@"obj4 = %@", obj4);
}
return 0;
}
//singleton.h
#import <Foundation/Foundation.h>
@interface Singleton :NSObject
+(Singleton*) shareInstance;
@end
#import "Singleton.h"
@implementation Singleton
//通过类方法返回单例
+(Singleton*) shareInstance
{
static Singleton* sing =nil;
//多线程互斥锁
@synchronized(self)
{
if (sing == nil)
{
sing = [NSAllocateObject([selfclass], 0, NULL) init];
}
}
return sing;
}
//allocWithZone重写(源于NSObject的类方法)
//在正常做ALLOC时会分配地址,加于allocWithZone方法,
//重写方法,使得alloc方法仅在该变量不存在时候分配一次
+(id) allocWithZone:(NSZone *)zone
{
return [[selfshareInstance] retain];
}
//copyWithZone重写(源于NSObject的实例方法)
//正常的copy 方法会将实例拷贝一份复制至新地址
//重写方法,使得copy方法返回自身
-(id) copyWithZone:(NSZone* )zone
{
return self;
}
//retain重写(源于NSObject的实例方法)
-(id) retain
{
return self;
}
//retainCount重写 (返回值永远是常量%li ,NSUIntegerMax = -1)
-(NSUInteger) retainCount
{
returnNSUIntegerMax;
}
//release重写
-(onewayvoid) release
{
}
//autorelease重写 (返回自身)
-(id) autorelease
{
return self;
}
@end
- iOS study Day6 -2 单例模式
- iOS study Day6-计算器2
- iOS study Day6- 继承
- iOS study Day6-数字转英文
- iOS 单例模式2
- java study 06day--单例设计模式
- iOS单例模式
- iOS 单例模式
- IOS 单例模式
- iOS 单例模式
- IOS单例模式
- ios单例模式
- iOS 单例模式
- iOS 单例模式
- IOS单例模式
- iOS 单例模式
- iOS 单例模式
- IOS 单例模式
- Neutron L3 Agent packet flow
- Python pickle模块学习笔记
- ubuntu13.10 IDLE 无法关闭文件解决方法
- 使用_CrtSetDbgFlag检测内存泄露
- C语言点滴chpt14 后记
- iOS study Day6 -2 单例模式
- mongodb单collection导入导出
- 2014最新开源微信源码 支持二次开发,微信对接公众平台多用户程序 全面体验
- Oracle数据库文件恢复与备份思路
- HashMap原码分析(基于JDK1.6)
- 问个问题Solr 相关的
- mongodb c driver执行mongo_run_command求sum
- 《多线程服务器的适用场合》– 例释与答疑
- MapReduce实现大矩阵乘法