Rom*_*use 1 singleton facebook objective-c ios
我是iOS编程的新手,我对单例类是什么以及使用它的原因很感兴趣.我找到了一些信息,但它含糊不清.特别是我想将它应用于实例.我的项目使用Facebook SDK,我想为我的NSDictionary创建包含好友列表的单例类.我的.m委托文件:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//here is some other code
facebook = [[Facebook alloc] initWithAppId:@"my app id" andDelegate:self];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessTokenKey"]
&& [defaults objectForKey:@"FBExpirationDateKey"]) {
facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
}
if (![facebook isSessionValid]) {
NSArray *permissions = [[NSArray alloc] initWithObjects:
@"user_location",
@"friends_location",
@"read_friendlists",
nil];
[facebook authorize:permissions];
[permissions release];
}
[facebook requestWithGraphPath:@"me/friends" andDelegate:(id)self];
//here is some other code
}
Run Code Online (Sandbox Code Playgroud)
我设置了我的NSDictionary值请求返回朋友列表:
- (void)request:(FBRequest *)request didLoad:(id)result {
_friendsDictionary = result;
}
Run Code Online (Sandbox Code Playgroud)
我需要以哪种方式编写单例类,不要使用委托类AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];.
单例是一个只在应用程序的运行时实例化一次的类.它们通常采用管理器或工厂类的形式.当你想让对象永远存在于内存中时,它们会被使用.通常我用于包含全局函数和变量的全局类,我需要在我的应用程序的许多地方.
实现单例模式的最简单示例是这样的
在.h
#import <Foundation/Foundation.h>
@interface MySingleton : NSObject {
}
+(MySingleton*)sharedMySingleton;
-(void)sayHello;
@end
Run Code Online (Sandbox Code Playgroud)
在.m
@implementation MySingleton
static MySingleton* _sharedMySingleton = nil;
+(MySingleton*)sharedMySingleton
{
@synchronized([MySingleton class])
{
if (!_sharedMySingleton)
[[self alloc] init];
return _sharedMySingleton;
}
return nil;
}
-(void)sayHello {
NSLog(@"Hello World!");
}
@end
Run Code Online (Sandbox Code Playgroud)
因此,在你的项目的任何类中,你只需要导入这个类,然后调用这个函数 [MySingleton sharedMySingleton] sayHello];
希望这会有所帮助.
| 归档时间: |
|
| 查看次数: |
2286 次 |
| 最近记录: |