切换回主视图时,Facebook API会导致应用崩溃

时间:2011-08-23 07:08:14

标签: iphone objective-c uiviewcontroller fbconnect flipside

抬头:我对目标C不太熟悉,无法确切知道我在说什么......

这是我的人生故事: 我的应用程序基本上由3个视图组成:主要,脸书和推特..没有问题的推特,没有问题在视图之间来回切换,直到... bum bum bum ..我开始在本网站的指导中使用Facebook API :http://www.mobisoftinfotech.com/blog/iphone/iphone-fbconnect-facebook-connect-tutorial/

现在我可以连接到FB并使用他们的API并发布没有任何问题,但是当我从我的应用程序上的Facebook视图切换回主视图时,它会切换然后立即崩溃..

FacebookViewController.m

#import "FacebookViewController.h"
#import "Crush_LoveAppDelegate.h"

#define _APP_KEY @"43e37a535cc09c2013bd76fde78dfcc7"
#define _SECRET_KEY @"cc14801521a0c4d1dc31b7cacb891072"

@implementation FacebookViewController
@synthesize facebookFeed;
@synthesize delegate;
@synthesize loginButton;
@synthesize facebookAlert;
@synthesize usersession;
@synthesize username;
@synthesize post;



- (void)viewDidLoad {

Crush_LoveAppDelegate *appDelegate =
(Crush_LoveAppDelegate *)   [[UIApplication
                              sharedApplication]delegate];
if (appDelegate._session == nil){
    appDelegate._session = [FBSession sessionForApplication:_APP_KEY secret:_SECRET_KEY delegate:self];
}

if(self.loginButton == NULL)
    self.loginButton = [[[FBLoginButton alloc] init] autorelease];
loginButton.frame = CGRectMake(110, 200, 100, 50);
[self.view addSubview:loginButton]; 
[super viewDidLoad];
self.view.backgroundColor = [UIColor viewFlipsideBackgroundColor];

}


- (IBAction)done:(id)sender {
[self.delegate facebookViewControllerDidFinish:self];
}

FacebookViewController.h

#import <UIKit/UIKit.h>
#import "FBConnect/FBConnect.h"
#import "FBConnect/FBSession.h"
#import "FBConnect/FBRequest.h"
#import "FBConnect/FBStreamDialog.h"

@protocol FacebookViewControllerDelegate;

@interface FacebookViewController : UIViewController <UIApplicationDelegate, FBSessionDelegate, FBRequestDelegate>{
IBOutlet UIWebView *facebookFeed;
id <FacebookViewControllerDelegate> delegate;
FBLoginButton *loginButton;
UIAlertView *facebookAlert;
FBSession *usersession;
NSString *username;
BOOL post;

}

@property(nonatomic,retain) FBLoginButton *loginButton;
@property(nonatomic,retain) UIAlertView *facebookAlert;
@property(nonatomic,retain)  FBSession *usersession;
@property(nonatomic,retain) NSString *username;
@property(nonatomic,assign) BOOL post;
@property (nonatomic, assign) id <FacebookViewControllerDelegate> delegate;
@property (nonatomic, retain) IBOutlet UIWebView *facebookFeed;
- (IBAction)done:(id)sender;
@end


@protocol FacebookViewControllerDelegate
- (void)facebookViewControllerDidFinish:(FacebookViewController *)controller;

- (BOOL)textFieldShouldReturn:(UITextField *)textField;
-(void)getFacebookName;
-(void)postToWall;

@end

为了节省空间,我把一些.m的东西切掉了,但是你明白了......我把它缩小了,似乎这个问题是在这行中导致的.m

        appDelegate._session = [FBSession sessionForApplication:_APP_KEY secret:_SECRET_KEY delegate:self];

我一直在尝试自己调试几个小时,而且我自己也不了解自己来诊断它..

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我不确定你的应用程序崩溃的原因,但我想我会提到有一些非常好的Apple WWDC视频,关于在XCode中进行错误检查和崩溃。特别是,“使用Xcode 4和LLDB进行调试”和“了解iPhone OS上的崩溃报告”,均来自WWDC 2010 videos。我相信您需要开发人员登录才能访问这些视频,但如果您有兴趣了解有关调试的更多信息,那么当然值得一看。

答案 1 :(得分:0)

好的,对于有这个问题的其他人来说,这就是我所做的......

FacebookViewController.m文件

- (void)dealloc {
[username release];
[usersession release];
[loginButton release];  
[super dealloc];
}

我注释掉了[loginButton发布];线路,它的工作很奇怪..我不知道这是否会给我带来严重的问题,但它现在有用..