Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>a good practice when making a singleton class is to use shared instance. Correct singleton also has to include some memory management overridden methods. In your case it can be done like this:</p> <pre><code>@implementation FacebookManager static FacebookManager *mySharedFacebookManager; + (FacebookManager*)sharedFacebookManager { @synchronized(self) { if(mySharedFacebookManager == nil) { mySharedFacebookManager = [[self alloc] init]; } } return mySharedFacebookManager; } + (id)allocWithZone:(NSZone *)zone { @synchronized(self) { if(mySharedFacebookManager == nil) { mySharedFacebookManager = [super allocWithZone:zone]; return mySharedFacebookManager; } } return nil; } - (id)copyWithZone:(NSZone *)zone { return self; } - (id)retain { return self; } - (unsigned)retainCount { return UINT_MAX; } - (oneway void)release { } - (id)autorelease { return self; } </code></pre> <p>In your case you may have Facebook type object as ivar, and some methods to wrap over FB API, for example like this:</p> <pre><code>- (id)init { self = [super init]; if(self) { facebook = [[Facebook alloc] initWithAppId:FB_APP_ID andDelegate:self]; // restore previous session NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; if ([defaults objectForKey:@"FBAccessTokenKey"] &amp;&amp; [defaults objectForKey:@"FBExpirationDateKey"]) { facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"]; facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"]; } ... } return self; } - (void)login { NSArray *permissions = [NSArray arrayWithObjects: @"user_about_me", @"publish_stream", nil]; [facebook authorize:permissions]; } - (void)postToFeed:(NSString*)messageToPost { NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys: messageToPost, @"message", nil]; [facebook requestWithGraphPath:@"me/feed" andParams:params andHttpMethod:@"POST" andDelegate:self]; } </code></pre> <p>From other classes which have to deal with Facebook the construction is simple:</p> <pre><code>[[FacebookManager sharedFacebookManager] login]; ... [[FacebookManager sharedFacebookManager] postToFeed:@"Hello World!"]; </code></pre> <p>I hope this snippets will help you.</p> <p>To manage your facebook session you have to remember accessToken manually in FBSessionDelegate methods like that:</p> <pre><code>- (void)fbDidLogin { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"]; [defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"]; [defaults synchronize]; } - (void)fbDidLogout { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults removeObjectForKey:@"FBAccessTokenKey"]; [defaults removeObjectForKey:@"FBExpirationDateKey"]; [defaults synchronize]; } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload