我的ViewController中有一个facebook变量,我想在AppDelegate方法中引用它。我该怎么做呢?
在我的AppDelegate中我想放这个,因为它使用UIApplication,所有其他引用都在这个类中:
// For iOS 4.2+ support
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [facebook handleOpenURL:url];
}
facebook变量位于我的ViewController .h文件中:
#import <UIKit/UIKit.h>
#import "FBConnect.h"
@interface ImportPicViewController : UIViewController <FBSessionDelegate, FBDialogDelegate>{
Facebook *facebook;
}
@property (nonatomic, retain) Facebook *facebook;
@end
并在.m文件中合成:
@implementation ImportPicViewController
@synthesize facebook;
但它是ViewController中的alloc init:
- (void)viewDidLoad
{
[super viewDidLoad];
facebook = [[Facebook alloc] initWithAppId:@"224207854355440" andDelegate:self];
有什么想法吗?
答案 0 :(得分:2)
我的ViewController中有一个我要引用的facebook变量 在我的AppDelegate方法中。
这听起来不是一个好计划 - 这意味着你的app委托依赖于这个视图控制器。
更好的设计可能让app delegate创建Facebook的实例并在其自己的ivar中保留对它的引用。然后,当它创建视图控制器时,它可以传递对Facebook实例的引用。这样,app委托和视图控制器都使用相同的Facebook对象,但他们并没有尝试访问彼此的实例变量。
答案 1 :(得分:1)
在AppDelegate中声明一个公共方法,它接受一个指向ViewController的指针。然后将接收的指针存储在AppDelegate中。一旦需要ViewController,只需使用存储的指针。
使用'facebook'的一个更丑陋的方法是将它放在一个全局变量中。