- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 View 中,我显示从 coredata 获取的图像,我使用轮播类显示的图像。在同一 View 中,我有 Facebook 按钮,它将导航到另一个屏幕。当我单击 Facebook 按钮时,不会执行该操作,加载图像后仅出现下一个屏幕,单击按钮后不会立即调用该按钮操作。
在 viewDidLoad 中我调用了:
[self performSelectorInBackground:@selector(popularImages) withObject:nil];
popularImages 方法:
- (void)popularImages
{
NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Deals"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ispopular == 1"];
[request setPredicate:predicate];
NSLog(@"popular Hypes called");
[self.managedObjectContext executeFetchRequest:request returnManagedObjectIDs:NO onSuccess:^(NSArray *deals) {
deals123 = [[NSMutableArray alloc] initWithArray:deals];
ij = 1;
for (Deals *deals in deals123) {
customizedMessage = [deals valueForKeyPath:@"txtmsgrec"];
dealIdString = [deals valueForKeyPath:@"dealsId"];
descriptionStr = [deals valueForKeyPath:@"dealdescription"];
captionStrArray = [deals valueForKeyPath:@"dealsassets.caption"];
[customizedMessageDict setObject:customizedMessage forKey:[NSString stringWithFormat:@"dealid%d",ij]];
[dealDict setObject:customizedMessageDict forKey:@"dealsmessage"];
[dealsIdDict setObject:dealIdString forKey:[NSString stringWithFormat:@"dealid%d",ij]];
[dealDict setObject:dealsIdDict forKey:@"dealsId"];
NSDictionary *dict = [NSDictionary dictionaryWithObject:captionStrArray forKey:@"caption"];
NSArray *captionTemparr = [[dict objectForKey:@"caption"] allObjects];
NSArray *assets = [deals valueForKeyPath:@"dealsassets.dealassetid"];
NSDictionary *dealassetidDict = [NSDictionary dictionaryWithObject:assets forKey:@"dealassetid"];
NSArray *dealassetidTemparr = [[dealassetidDict objectForKey:@"dealassetid"] allObjects];
[dealsUrlDict setObject:[[dealassetidDict objectForKey:@"dealassetid"] allObjects] forKey:[NSString stringWithFormat:@"dealid%d",ij]];
[dealDict setObject:dealsUrlDict forKey:@"delasURL"];
[dealsdescriptionDict setObject:descriptionStr forKey:[NSString stringWithFormat:@"dealid%d",ij]];
[dealDict setObject:dealsdescriptionDict forKey:@"dealsDescription"];
[dealscaptionDict setObject:captionTemparr forKey:[NSString stringWithFormat:@"dealid%d",ij]];
[dealDict setObject:dealscaptionDict forKey:@"dealscaption"];
ij++;
}
NSArray *array = [[dealDict valueForKey:@"delasURL"]allKeys];
NSLog(@"allKeys]class %@",[[[dealDict valueForKey:@"delasURL"]allKeys]class]);
NSDictionary *dealurlDict = [dealDict valueForKey:@"delasURL"];
NSDictionary *dealDescDict = [dealDict valueForKey:@"dealsDescription"];
NSDictionary *dealCaptionDict = [dealDict valueForKey:@"dealscaption"];
NSDictionary *dealIDDict = [dealDict valueForKey:@"dealsId"];
NSDictionary *dealMessageDict = [dealDict valueForKey:@"dealsmessage"];
for(int i=0;i<[array count];i++)
{
NSString *keyvalue = (NSString *)[array objectAtIndex:i];
NSString *dealId = [dealIDDict valueForKey:keyvalue];
NSArray *dealUrl = [dealurlDict valueForKey:keyvalue];
NSString *dealdesc = [dealDescDict valueForKey:keyvalue];
NSArray *dealcaption = [dealCaptionDict valueForKey:keyvalue];
NSString *dealMessage = [dealMessageDict valueForKey:keyvalue];
if([dealUrl count] == [dealcaption count])
{
//[dealUrl enumerateObjectsUsingBlock:^(id obj,NSUInteger idx,BOOL *stop)
for(int j = 0; j<[dealUrl count]; j++)
{
PopularHypesModal *dobject = [[PopularHypesModal alloc]init];
dobject.dealsID = dealId;
dobject.dealDescription = dealdesc;
dobject.dealcaption = [dealcaption objectAtIndex:j];
dobject.dealsUrl = [dealUrl objectAtIndex:j];
dobject.dealsMessage = dealMessage;
[self.items addObject:dobject];
[dobject release];
}
}
else
{
//[dealUrl enumerateObjectsUsingBlock:^(id obj,NSUInteger idx,BOOL *stop)
for(int j=0;j<[dealUrl count];j++)
{
PopularHypesModal *dobject=[[PopularHypesModal alloc]init];
dobject.dealsID = dealId;
dobject.dealDescription = dealdesc;
dobject.dealsMessage = dealMessage;
if([dealcaption count]>0)
{
dobject.dealcaption =[dealcaption objectAtIndex:0];
}
dobject.dealsUrl=[dealUrl objectAtIndex:j];
[self.items addObject:dobject];
[dobject release];
}
// ];
}
}
//];
carousel.dataSource = self;
carousel.delegate = self;
}onFailure:^(NSError *error) {
NSLog(@"Error fetching: %@", error);
popularHypes = YES;
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Server Problem" message:@"Sorry, There is some Error with server,Please try after some time" delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles:@"Ok", nil];
[alert show];
[alert release];
ij++;
}];//1st
[dealDict retain];
}
我在xib中添加的按钮,我该如何克服这个问题?
最佳答案
在后台线程上运行不会给您带来任何问题,除非您尝试从同一后台线程更新 UI 元素。请务必将任何与 UI 相关的事件转发到主线程。例如:
- (void)viewWillAppear:(BOOL)animated {
[self performSelectorInBackground:@selector(refreshTableView)];
[super viewWillAppear:animated];
}
- (void)refreshTableView {
// YourCode
[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];
}
希望对你有帮助:)
关于iphone - PerformselectorinBackground 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18455970/
performSelectorInBackground 是否为每个调用生成一个新线程,还是为所有调用(可能排队)共享一个线程(不是主线程)? 最佳答案 每次调用 -performSelectorInB
在 View 中,我显示从 coredata 获取的图像,我使用轮播类显示的图像。在同一 View 中,我有 Facebook 按钮,它将导航到另一个屏幕。当我单击 Facebook 按钮时,不会执行
我有一个 Action ,应该制作一些动画,在这些动画期间,我想推送另一个 View Controller ,但我想保持动画运行...我的想法是使用 performSelectorInBackgrou
抱歉新手问题(也许)。我正在为 ios 开发一个应用程序,我正在尝试从主线程中执行一个外部 xml 读取,以便在调用发挥其魔力时不卡住 ui。 这是我所知道的使进程不在 objective-c 的主线
我正在调用一个在后台线程中运行的方法: [self performSelectorInBackground:@selector(loadViewControllerWithIndex:) withOb
即使用户最小化并开始在 ios 设备上处理其他内容,我也试图让应用程序在后台任务上运行,但只有当应用程序在屏幕上处于事件状态时,我的方法才会被命中。我在这里遗漏了一些明显的东西吗? -(void) v
我想在后台调用这个方法, -(void)downloadImage_3:(NSString* )Path AtIndex:(int)i 我以这种方式调用,但它崩溃并显示 EXC_BAD_ACCESS
好吧,我遇到了一个看似非常简单的情况,但无法弄清楚。 在我的 viewDidLoad 中,我有: -(void)viewDidLoad { [super viewDidLoad]; W
简单的问题:如果我这样做会发生什么: - (void)viewDidLoad { [self performSelectorInBackground:@selector(myBGMethod)
我有一个类 MatchDayDataController ,有一个方法 pushIncompleteDataToServer。 在另一个类 SummaryVC.m 中,我想在 performSelec
我需要对某个网址进行多次 https 调用。因此我做了这样的事情 //ViewController Source -(IBAction) updateButton_tapped { [self
我是 iOS 开发新手。我在运行后台线程时遇到问题。在我的代码中,resetUi 在主 UI 线程上运行,现在我正在启动一个后台线程来获取图像数据并更新我的图像。一切正常,但在调用 performSe
如何使用 performSelectorInBackground 调用具有多个参数的方法,如下所示? 示例方法: -(void) reloadPage:(NSInteger)pageIndex fir
我有一种方法用于在用户单击“保存”时保存图像。我使用 PerformSelectorInBackground 保存图像,弹出 View Controller 并显示上一个 View Controlle
我一直在许多应用程序中使用 -performSelectorInBackground,有点忘记了 -detachNewThreadSelector。现在我想知道两者之间有什么区别。它们是否几乎可以互换
performSelectorInBackground:中有performSelector: afterDelay:和NSObject方法。如何将它们合并为一行代码? 也许以某种方式与NSTimer在
我正在尝试使用performselectorinbackground,但它没有运行。有人告诉我,应用程序设置中有一项检查允许 ios 中的后台任务,但我找不到该检查。因此,请告诉我如何通过将检查添加到
我正在尝试通过在后台运行的功能更改我的 MPMoviePlayerController 方法的内容。但是我的内容没有更改。 [self performSelectorInBackground:@sel
我在 iOS 中使用 MapKit 和注释。在添加注释之前(这可能需要一段时间),我想显示一个小的“正在加载...”UIView。如果我在没有线程的情况下执行此操作,则加载 View 会滞后很多,以至
我有一个 UITableView,当项目被选中时,它加载一个 viewController,在它内部使用 performSelectorInBackground 在后台执行一些操作。 如果您慢慢点击
我是一名优秀的程序员,十分优秀!