首页 > 代码库 > ios学习记录 day44 UI20 Storyboard 高级可视化编程 + 单例
ios学习记录 day44 UI20 Storyboard 高级可视化编程 + 单例
可视化编程 : 5.0之前 xib 5.0之后 Storyboard
注意事项:1.在AppDelegate中不用代码初始化一个window 2.在general 设置 Main Interface(创建的时候自动设置的)
weak可以指向 但是没有拥有权 strong有拥有权
单例特性:
1.唯一性 创建的对象永远指向同一块内存地址 2.不释放 从打开程序到后台关闭 对象都不释放
单例安全:加锁@synchronized 防止同一块内存被创建两次,破坏唯一性
//单例安全
@synchronized(self){
//如果不存在的话 就创建一个
if (!single) {
single = [[Singleton alloc]init];
}
return single;
}
转载内容!
单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。
1.单例模式的要点:
显然单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。
2.单例模式的优点:
1、为单例对象实现一个静态实例,并初始化,然后设置成nil,
2、实现一个实例构造方法检查上面声明的静态实例是否为nil,如果是则新建并返回一个本类的实例,
3、重写allocWithZone方法,用来保证其他人直接使用alloc和init试图获得一个新实力的时候不产生一个新实例,
4、适当实现allocWitheZone,copyWithZone,release和autorelease。
@implementation SurveyRunTimeData
+ (SurveyRunTimeData*) sharedInstance //第二步:实例构造检查静态实例是否为nil
{
@synchronized (self)
{
if (sharedObj == nil)
{
[[self alloc] init];
}
}
return sharedObj;
}
+ (id) allocWithZone:(NSZone *)zone //第三步:重写allocWithZone方法
{
@synchronized (self) {
if (sharedObj == nil) {
sharedObj = [super allocWithZone:zone];
return sharedObj;
}
}
return nil;
}
- (id) copyWithZone:(NSZone *)zone //第四步
{
return self;
}
- (id) retain
{
return self;
}
- (unsigned) retainCount
{
return UINT_MAX;
}
- (oneway void) release
{
}
- (id) autorelease
{
return self;
}
- (id)init
{
@synchronized(self) {
[super init];//往往放一些要初始化的变量.
return self;
}
}
@end
//单例对象
[UIApplication sharedApplication];
[NSNotificationCenter defaultCenter];//消息中心
[NSUserDefaults standardUserDefaults];//plist文件
[NSFileManager defaultManager];//文件管理
[NSBundle mainBundle];//bundle路径