程序多次创建类的对象没有多大意义,还有可能造成系统性能下降。
如果一个类始终只能创建一个实例,这个类称为单例类.
单例类可以通过static全局变量来实现.
#import
<Foundation/Foundation.h>
@interface
DCSingle :
NSObject
+(
id
) instance ;
@end
#import
"DCSingle.h"
static
id
instance =
nil
;
@implementation
DCSingle
+(
id
) instance
{
if (! instance ) {
// 创建一个 Singleton 实例,并将该实例赋给 instance 全局变量
instance = [[ super alloc ] init ];
}
return instance ;
{
if (! instance ) {
// 创建一个 Singleton 实例,并将该实例赋给 instance 全局变量
instance = [[ super alloc ] init ];
}
return instance ;
}
@end
#import
<Foundation/Foundation.h>
#import "DCSingle.h"
int
main(
int
argc,
const
char
* argv[]) {
@autoreleasepool {
// insert code here...
NSLog ( @"Hello, World!" );
// 判断两次获取的实例是否相等,程序将会返回 1 (代表真)
NSLog ( @"%d" ,[ DCSingle instance ] == [ DCSingle instance ]);
}
return 0 ;
@autoreleasepool {
// insert code here...
NSLog ( @"Hello, World!" );
// 判断两次获取的实例是否相等,程序将会返回 1 (代表真)
NSLog ( @"%d" ,[ DCSingle instance ] == [ DCSingle instance ]);
}
return 0 ;
}
==>
2014-11-29 11:54:02.124 Singleton[626:303] Hello, World!
2014-11-29 11:54:02.127 Singleton[626:303] 1
2014-11-29 11:54:02.127 Singleton[626:303] 1
Program ended with exit code: 0