我是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
}
我設置爲我的請求,NSDictionary的值返回好友列表:
- (void)request:(FBRequest *)request didLoad:(id)result {
_friendsDictionary = result;
}
在哪種方式我需要編寫單獨的類,並且不使用代理類AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
。
您還可以添加諸如「FacebookID,UserInfo等」的屬性,並在您的應用程序中爲許多目的構建get/set方法! – Sakares
所以我需要在代理中的單例類中編寫相同的方法? – RomanHouse
作爲@Jojas說..你可以定義任何你想要的屬性作爲Facebook實例,並通過你的單例類在你的項目中的任何類訪問它..也可以在單例類中實現Facebook委託方法,就像你在正常班級。 –