How do I move these processes from the AppDelegate and set up individual delegates from each Call?

随声附和 提交于 2019-12-11 18:37:06

问题


I know this is not best practice so I would like to know what's the best way to remove all these requests to individual delegates as to reduce loading time. The result is to have each feed load as soon as it is called or have them load asynchronously

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:           (NSDictionary *)launchOptions
{
// Override point for customization after application launch.

// make RSS call
JSTRRSSReader *reader = [[JSTRRSSReader alloc] init];
[reader startRequest];

BUSINESSReader *busreader = [[BUSINESSReader alloc] init];
[busreader startRequest];

SPORTSReader *sportreader = [[SPORTSReader alloc] init];
[sportreader startRequest];

LIFESTYLEReader *lifestylereader = [[LIFESTYLEReader alloc] init];
[lifestylereader startRequest];

TEENAGEReader *teenagereader = [[TEENAGEReader alloc] init];
[teenagereader startRequest];

EDITORIALReader *editorialreader = [[EDITORIALReader alloc] init];
[editorialreader startRequest];

COLUMNReader *columnreader = [[COLUMNReader alloc] init];
[columnreader startRequest];

FOODReader *foodreader = [[FOODReader alloc] init];
[foodreader startRequest];

ALLWOMANReader *allwomanreader = [[ALLWOMANReader alloc] init];
[allwomanreader startRequest];

LETTERSReader *lettersreader = [[LETTERSReader alloc] init];
[lettersreader startRequest];

AUTOReader *autoreader = [[AUTOReader alloc] init];
[autoreader startRequest];

ENTERTAINMENTReader *entertainmentreader = [[ENTERTAINMENTReader alloc] init];
[entertainmentreader startRequest];

ENVIRONMENTReader *environmentreader = [[ENVIRONMENTReader alloc] init];
[environmentreader startRequest];

CAREERReader *careerreader = [[CAREERReader alloc] init];
[careerreader startRequest];

MAINReader *mainreader = [[MAINReader alloc] init];
[mainreader startRequest];

SLIDERReader *sliderreader = [[SLIDERReader alloc] init];
[sliderreader startRequest];

return YES;
}

回答1:


I'm not 100% sure what you are asking. But if your work is thread safe, you can wrap each of those calls in an async block.

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

    FOODReader *foodreader = [[FOODReader alloc] init];
    [foodreader startRequest];  //not sure if this is blocking or not, guessing yes

    dispatch_async(dispatch_get_main_queue(), ^{
          //do stuff here after the blocking call has finished. maybe notify delegate, etc
    });
});


来源:https://stackoverflow.com/questions/18307839/how-do-i-move-these-processes-from-the-appdelegate-and-set-up-individual-delegat

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!