单例模式(oc)

//主函数 main.m
#import <Foundation/Foundation.h>
#import "Singleton.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {

        Singleton *sing1=
        [Singleton shareInstance];
        Singleton *sing2=[Singleton shareInstance];

        Singleton *sing3=[Singleton new];
        Singleton *sing4=[[Singleton alloc]init];
        Singleton *sing5=[sing4 copy];

        NSLog(@"%@",sing1);
        NSLog(@"%@",sing2);
        NSLog(@"%@",sing3);
        NSLog(@"%@",sing4);
        NSLog(@"%@",sing5);

    }
    return 0;
}

//Singleton.h文件
#import <Foundation/Foundation.h>

@interface Singleton : NSObject<NSCopying>
+(Singleton *)shareInstance;
@end

//Singleton.m文件
#import "Singleton.h"

@implementation Singleton
static Singleton *singleton;
//单例方法
+(Singleton *)shareInstance{
    if (singleton==nil) {
        singleton=[[Singleton alloc]init];
    }
    return singleton;

}
//单例方法  初始化
+(instancetype)allocWithZone:(struct _NSZone *)zone{//懒加载
    if (singleton==nil) {
        singleton=[super allocWithZone:zone];
    }
    return singleton;
}
//单例方法 复制
-(id)copyWithZone:(NSZone *)zone{
    return self;
}
@end
时间: 2025-01-21 21:06:12

单例模式(oc)的相关文章

单例模式探索

单例模式OC/C++探索 以前写OC中的单例很固定,一直都这样写,后来我就把它放在快捷代码块里面,只要输入singleton就直接输出这段代码 + (instancetype)instance { static Class *sharedInstance = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ sharedInstance = [[self alloc] init]; }); return sha

Swift开发语法

Swift开发入门 简介 Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序 2014 年,在 Apple WWDC 发布 历史 2010 年 7 月,苹果开发者工具部门总监 Chris Lattner(克里斯·拉特纳) 开始着手 Swift 编程语言的设计工作 用一年时间,完成基本架构 Swift 大约历经 4 年的开发期,2014 年 6 月发表 克里斯·拉特纳 ) 特色 苹果宣称 Swift 的特点是:快速.现代.安全.互动,而且明显优于 Object

OC学习篇之---单例模式

在之前的一片文章中介绍了对象的拷贝相关知识:http://blog.csdn.net/jiangwei0910410003/article/details/41926531,今天我们来看一下OC中的单例模式,单例模式在设计模式中用的可能是最多的一种了,而且也是最简单的一种 实现单例模式有三个条件 1.类的构造方法是私有的 2.类提供一个类方法用于产生对象 3.类中有一个私有的自己对象 针对于这三个条件,OC中都是可以做到的 1.类的构造方法是私有的 我们只需要重写allocWithZone方法,

(转载)OC学习篇之---单例模式

在之前的一片文章中介绍了对象的拷贝相关知识,今天我们来看一下OC中的单例模式,单例模式在设计模式中用的可能是最多的一种了,而且也是最简单的一种 实现单例模式有三个条件 1.类的构造方法是私有的 2.类提供一个类方法用于产生对象 3.类中有一个私有的自己对象 针对于这三个条件,OC中都是可以做到的 1.类的构造方法是私有的 我们只需要重写allocWithZone方法,让初始化操作只执行一次 2.类提供一个类方法产生对象 这个可以直接定义一个类方法 3.类中有一个私有的自己对象 我们可以在.m文件

Swift实现OC中的单例模式

今天想通过手动的方式上传下信息到GRID CONTROL MANAGEMENT REPOSITORY里,出现如下的错误(红色部分): [[email protected] bin]$ ./emctl status agent Oracle Enterprise Manager 10g Release 10.2.0.1.0. Copyright (c) 1996, 2005 Oracle Corporation.  All rights reserved. --------------------

OC的单例模式的实现

以下是在ARC,GCD下的单例模式实现: 头文件中申明类方法getInstance: #import <Foundation/Foundation.h> @interface SingleTon : NSObject + (SingleTon*) getInstance; @property (nonatomic,strong) NSString* SingleData; @end 实现中,使用静态变量instance存储单例,在init中设置使用GCD的dicpatch_once来执行只运行

iOS开发——实用技术OC篇&amp;单例模式的实实现(ACR&amp;MRC)

单例模式的实实现(ACR&MRC) 在iOS开发中单例模式是一种非常常见的模式,虽然我们自己实现的比较少,但是,系统却提供了不少的到来模式给我们用,比如最常见的UIApplication,Notification等, 那么这篇文章就简单介绍一下,我们开发中如果想要实现单例模式要怎么去实现! 单例模式顾名思义就是只有一个实例,它确保一个类只有一个实例,并且自行实例化并向整个系统提供这个实例.它经常用来做应用程序级别的共享资源控制.这个模式使用频率非常高,通过一个单例类,可以实现在不同窗口之间传递数

iOS开发-OC篇-单例模式

回顾一下load和initialize方法,有几点需要注意. load方法和initialize方法分析: 1.load方法: 1> 当类被引用进程序的时候会执行这个函数 2> 一个类的load方法不用写明[super load],父类就会收到调用,并且在子类之前. 3> Category的load也会收到调用,但顺序上在主类的load调用之后. 2.initialize方法: 1> initialize的自然调用是在第一次主动使用当前类的时候 2> 和load不同,即使子类

【非凡程序员】 OC第十二节课 (单例模式)

设计模式分为三类:创建模式,结构模式,行为模式.共有26中模式 单例模式 1.main函数 #import <Foundation/Foundation.h>#import "Theme.h" int main(int argc, const char * argv[]) {    @autoreleasepool  {        // insert code here...        NSLog(@"Hello, World!");      

OC 设计模式——单例模式

单例模式的作用:可以保证在程序运行过程,一个类只有一个实例,而且这个实例易于供外界访问.永远只分配一次内存给这个类.由于在调用alloc方法的时候,都会调用allocWithZone,所以要重写这个方法,保证只分配一次内存. dispatch_once这个方法可以保证只调用一次,并且会自动加锁,线程安全. 在6.0之前的版本中修改工程为非ARC Xcode6.3下设置,修改工程在非ARC下: 定义宏来实现单例的通用性.在拼接宏的时候不能使用注释.最后面不能加/. // ## : 两个#号连接字符