作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
@Interface
//
// Created by macbook on 31.05.12.
//
// To change the template use AppCode | Preferences | File Templates.
//
#import <Foundation/Foundation.h>
@interface CESettings : NSObject
+ (CESettings *)sharedInstance;
- (void)save;
@end
@实现
//
// Created by macbook on 31.05.12.
//
// To change the template use AppCode | Preferences | File Templates.
//
#import "CESettings.h"
@interface CESettings ()
@property(nonatomic, strong) NSUserDefaults *userDefaults;
@end
@implementation CESettings
@synthesize userDefaults = _userDefaults;
#pragma mark - Singleton
static CESettings *_instance = nil;
+ (CESettings *)sharedInstance {
@synchronized (self) {
if (_instance == nil) {
_instance = [self new];
}
}
return _instance;
}
- (id)init {
self = [super init];
if (self) {
self.userDefaults = [NSUserDefaults standardUserDefaults];
}
return self;
}
#pragma mark - Methods
- (void)save {
[self.userDefaults synchronize];
}
@end
我有一个用于应用程序设置的类。该类有一个创建单例的方法和一个 init 方法。两者有什么用..?我想如果有 sharedInstance 方法,就不需要 init 了……如果我错了请纠正我……感谢您的帮助。
最佳答案
init
方法是在 [self new]
调用中由 new
调用的方法。本质上是一样的
_instance = [[CESettings alloc] init];
但减少了输入并避免了对 CESettings
类的名称进行硬编码。
实现单例的更好方法是使用 dispatch_once
,如下所示:
+ (CESettings*)sharedInstance
{
static dispatch_once_t once;
static CESettings *_instance;
dispatch_once(&once, ^ { _instance = [self new]; });
return _instance;
}
关于iphone - init 在这个单例类中有什么用..?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16584975/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!