2016-04-08 9 views
0

私は[FBSDKShareAPI shareWithContent:content delegate:self];を共有するためにFacebookのphotoを共有し、自己はSocialUtilsというNSObjectに等しい。自己がNSObjectと等しい場合に代理人が失われる

私はライブラリに直接行くと、ログを入れています。

NSLog(@"2"); 
NSLog(@"_sharePhotoContent _delegate intern is!!! %@",_delegate); 
FBSDKGraphRequestHandler completionHandler = ^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { //Passing this line the delegate is lost. 
NSLog(@"3"); 
NSLog(@"_sharePhotoContent _delegate intern is!!! %@",_delegate); 

このプリントは次のとおりです。

2 
_sharePhotoContent _delegate intern is!!! <SocialUtils: 0x7f87f5707580> 

3 
_sharePhotoContent _delegate intern is!!! (null) 

私は同じことをしようとしたが、今回は、自己がUIViewControllerに等しく、完璧に動作し、デリゲートが残っています。これがなぜ起こるか私は理解していない

、私はそう多くUIViewControllersにコードを複製することを意味しますので、私の別のコントローラのロジックを持っている必要があります。この問題が発生したため、

誰かが私を啓発することができますか? FBSDKShareAPIで

+0

...この時間の間に収集されたごみを取得していないとあなたは多分 '_sharePhotoContent'への参照を失っているあなたのViewControllerになるだろうか? – random

+0

@random私はそうは思わない。まれに自分がviewcontrollerになることはありません – jose920405

答えて

1

delegate性が弱いと定義されます。ここを参照してください:

https://github.com/facebook/facebook-ios-sdk/blob/master/FBSDKShareKit/FBSDKShareKit/FBSDKSharing.h

あなたのSocialUtilsオブジェクトがガベージコレクションを取得している可能です。他のどのオブジェクトもSocialUtilsへの強い参照を持っていますか?あなたがSocialUtilsを定義どこ

@property (nonatomic, strong) SocialUtils *socialUtils; 

:YourAppDelegateオン

:いない場合は、あなたがこのような何かを行うことができ

SocialUtils *socialUtils = [[SocialUtils alloc] init]; 

YourAppDelegate *appDelegate = (YourAppDelegate *)[[UIApplication sharedApplication] delegate]; 
appDelegate.socialUtils = socialUtils; 

[socialUtils shareToFacebook:...] 
// this method^would call [FBSDKShareAPI shareWithContent:content delegate:self]; 

をそれはAppDelegate上にある必要はありません。また、限り、それは

+0

こんにちは@Mark Watsonは私のxcode '7.2.1'で完璧に動作しますが、私はこれをxcode' 6.3.1'でテストして動作しません。このクラッシュ - > '*** Terminating 「:キャッチされない例外により 'NSInvalidArgumentException'、理由のアプリ - [AppDelegate setSocialUtilsは:]:認識されていないセレクタは 'appDelegate.socialUtils = socialUtilsラインでインスタンス0x7ff53b422ec0''に送ら;'あなたのアイデアを持っていますか?私はこのxcodeで実行する必要があります。 – jose920405

+0

AppDelegateでプロパティを設定する方法の問題、またはAppDelegateをどのように呼び出すかのように聞こえます。プロパティはどのように見えるのですか?あなたはそれを合成しましたか? (必要な場合は不明)。 – markwatsonatx

+0

私は@synthesizeを使用せず、 '@property(nonatomic、strong)SocialUtils * socialUtils;のみを使用しています – jose920405

関連する問題