2016-04-08 22 views
0

'a eşit olduğunda kayboluyor photo'u Facebook'ta paylaşmak için [FBSDKShareAPI shareWithContent:content delegate:self]; kullanıyorum ve self SocialUtils adlı NSObject'a eşittir.delegesi, NSObject

Doğrudan kütüphaneye gidiyorum ve günlükleri ekliyorum.

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); 

Bu baskı geçerli:

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

3 
_sharePhotoContent _delegate intern is!!! (null) 

Denedim aynı, ama bu kez kendini bir UIViewController eşittir ve mükemmel çalışır temsilci kalır.

Bunun nedenini anlayamıyorum, ayrı denetleyici mantığına sahip olmam gerekir, aksi halde birçok UIViewControllers uygulamasında kodu çoğaltmak anlamına gelir.

Birisi beni aydınlatabilir, çünkü bu olur?

+0

belki de '_sharePhotoContent' referansını kaybediyor musunuz? – random

+0

@random Ben öyle düşünmüyorum. Nadiren kendini bir viewcontroller olmadığında – jose920405

cevap

1

FBSDKShareAPI içinde delegate özelliği zayıf olarak tanımlanmıştır. Buraya bakın: Mümkün

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

sizin SocialUtils çöp toplanan oluyor nesnesi. Başka bir nesnenin SocialUtils'e güçlü bir referansı var mı? YourAppDelegate günü

: Değilse, böyle bir şey yapabileceğini

@property (nonatomic, strong) SocialUtils *socialUtils; 

Eğer SocialUtils tanımlamak her yerde: Bu AppDelegate olmak zorunda değildir

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]; 

. Bu süre içinde toplanan çöpleri almadığı sürece ViewController cihazınızda da olabilir.

+0

yok @Mark Watson xcode '7.2.1'imde mükemmel çalışır ama bunu xcode' 6.3.1'de test ediyorum ve işe yaramazsa, bu kilitlenme -> '*** Sonlandırılıyor Uygulanamayan istisna 'NSInvalidArgumentException' nedeniyle uygulama, nedeni: '- [AppDelegate setSocialUtils:]: "appDelegate.socialUtils = socialUtils" satırında örnek 0x7ff53b422ec0'' için gönderilen tanınmayan seçici; Bu x kodunda çalışmam lazım. – jose920405

+0

AppDelegate'de özelliği nasıl ayarladığınızla ilgili bir sorun veya nasıl çağırıyorsunuz gibi görünüyor. Mülkiyet nasıl görünüyor? Onu sentezledin mi? (Gerekirse emin değilim). – markwatsonatx

+0

insan değil, @synthesize kullanmıyorum ve tam olarak kullanıyorum @ @ mülkiyeti (nonatomic, güçlü) SocialUtils * socialUtils; – jose920405

İlgili konular