我的应用程序的起点是这样的:
main.m:
int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([LazyTableAppDelegate class]));
}
}
现在在我的LazyTableAppDelegate.m类中:
我的功能如下:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:TopPaidAppsFeed]
cachePolicy:0
timeoutInterval:160.0];
self.appListFeedConnection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self];
NSAssert(self.appListFeedConnection != nil, @"Failure to create URL connection.");
// show in the status bar that network activity is starting
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
return YES;
}
使用storyboard为我的第二个xml fetch创建TableView控制器。 用户单击第一个视图上的行后,第二个视图将显示。
在第二个视图中我将调用此函数来获取另一个xml:
- (void)viewDidLoad
{
secondLazyTableAppDelegate *p = [[secondLazyTableAppDelegate alloc]init];
bool test = [p ??? ];
[super viewDidLoad];
self.imageDownloadsInProgress = [NSMutableDictionary dictionary];
}
我的方法好吗?如何在第二个视图中调用“didFinishLaunchingWithOptions”?
答案 0 :(得分:1)
didFinishLaunchingWithOptions方法是应用程序的起点
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
上面的函数在其生命周期中被调用一次,该生命周期实例化应用程序并包含您希望在应用程序的整个生命周期中初始化一次的所有数据。
因此,如果您希望您的应用委托执行某项功能,您可以创建另一种方法,例如 didFinishLaunchingCopy
- (void)didFinishLaunchingCopy
{
//Do what you want to perform
}
在您的其他视图中,您可以调用此方法
- (void)viewDidLoad
{
secondLazyTableAppDelegate *p = [[secondLazyTableAppDelegate alloc]init];
bool test = [p didFinishLaunchingCopy];
[super viewDidLoad];
self.imageDownloadsInProgress = [NSMutableDictionary dictionary];
}
这是一种更好,更精细的方法。