Tag: asynchronous

如何asynchronous加载UITableViewcell图像,以便滚动不滞后

我已经尝试过使用ASyncImageView来达到这个目的,但是我有点困惑,因为我将如何为我的具体情况实现它。 我目前有一个MatchCenterViewController ,其中包含一个表。 它将同步加载单元格的图像,这在滚动表格时会造成很多滞后。 我如何修改我加载远程图像的方式,以便它asynchronous完成? 我的代码如下: #import "MatchCenterViewController.h" #import <UIKit/UIKit.h> #import "MatchCenterCell.h" @interface MatchCenterViewController () <UITableViewDataSource, UITableViewDelegate> @property (nonatomic, strong) UITableView *matchCenter; @property (nonatomic, assign) BOOL matchCenterDone; @property (nonatomic, assign) BOOL hasPressedShowMoreButton; @end @implementation MatchCenterViewController – (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { } return self; } – (void)viewDidLoad […]

为什么Objective-C / Swift中的asynchronousnetworkingtesting困难?

所以,当我遇到以下情况时,我正在学习更多关于如何testingasynchronous代码的知识: 只要给定的testing方法完成,XCTest方法将考虑完成一个testing,并转到下一个testing。 这意味着在下一次testing运行时,来自以前testing的任何asynchronous代码将继续运行。 networking代码通常是asynchronous的,因为您不想在执行networking提取时阻止主线程。 再加上当testing方法结束时testing完成的事实,可能使testingnetworking代码变得困难。“ 不过,这在我看来是矛盾的。 如果我的理解正确,他说,即使asynchronous代码完成,XCTest方法也会继续运行。 然而,他接着说testing方法完成后testing就完成了。 但是这两个语句是矛盾的,由于asynchronous代码仍在运行,testing没有完成,而是在串行队列中继续执行下一个进程。 换句话说,当asynchronous代码完成时testing是否完成,还是在asynchronous代码仍在运行时继续testing? 最重要的是,networkingtesting如此困难? 谢谢。

asynchronousswift 3

我需要进行asynchronous调用,以便第二个方法只在第一个方法完成后调用。两种方法都是networking调用。 像这样的东西: signIn() getContacts() 我想确保getContacts只在signIn完成后被调用。 FWIW,我无法编辑方法签名,因为它们来自Google SDK。 这是我试过的: let queue = DispatchQueue(label: "com.app.queue") queue.async { signIn() getContacts() }

使用NotificationCenter Observer处理asynchronous请求

这个问题也有类似的问题,所以我很抱歉,但是没有人能够帮助我。 我正努力将这个asynchronous请求的值从完成处理程序返回给Firebase。 我从Firebase中检索的值是一个数组,它确实存在。 但 以下是我向Firebase发出请求的function: class SearchManager { var searchResults = [String]() var listOfMosaics = [String]() // Retrieves company list from Firebase func getMosaicTitles(completionHandler: @escaping (_ mosaics: [String]) -> ()) { Database.database().reference().child("mosaics").observeSingleEvent(of: .value, with: { (snapshot) in guard let allMosaics = snapshot.value as? [String] else { print("unable to unwrapp datasnapshot") return } completionHandler(allMosaics) }) } […]

简单的asynchronous图像下载UIImage视图

我有一个应用程序,我正在build设工作正常,但我使用的图像源是从一个网站,当我切换回我的初始视图,它需要相当一段时间才能加载。 我的问题是有没有办法做到这一点,并有更快的速度。 这里是我用来拉我的图像源的代码 ////Loads UIImageView from URL todaysWallpaper.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.inkdryercreative.com/daily/archive/mondays/images/062-mondays-960×640-A.jpg"]]]; 任何帮助或推动正确的方向。 不久,形象也会随着时间的推移而改变,所以对此的任何帮助/想法都将非常感谢。

如何在Swift中完成外部asynchronous请求之前先完成内部asynchronous请求?

我一直在试图达到这一段时间,不能得到它的工作。 首先让我给出一个简单的示例代码: override func viewDidLoad() { super.viewDidLoad() methodOne("some url bring") } func methodOne(urlString1: String) { let targetURL = NSURL(string: urlString1) let task = NSURLSession.sharedSession().dataTaskWithURL(targetURL!) {(data, response, error) in // DO STUFF j = some value print("Inside Async1") for k in j…someArray.count – 1 { print("k = \(k)") print("Calling Async2") self.methodTwo("some url string") } } task.resume() […]

如何在返回variables之前等待firebase将数据加载到variables中然后调用函数

这个问题不是重复的。 所以我有一个简单的函数,它将获取tableview单元格被点击的索引的参数,所以函数将进入didSelectRowAt tableView函数,它也将返回一个string。 该函数被称为getOpposingUserName,它连接到firebase以收集数据库内提供的信息。 现在我知道函数的function起作用了,这是一种逻辑错误,我不太明白。 从我所知道的是,无论何时您尝试从Firebase获取数据,它都会运行该代码,并花费一秒时间来实际获取数据。 但是因为它这样做,它会继续运行下面的代码,试图从数据库中获取数据。 这意味着如果我想返回一个string,那么string将永远是零或无论我设置其初始值,因为数据库将花费很长的时间来加载和函数已经跑过代码返回的东西。我对它的理解,我敢肯定有更多的技术方式来解释它) 所以基本上我问的是如何将数据“加载”到variables中,然后检查firebase是否已经将某些东西加载到variables中,然后将该variables返回给函数 这个问题不是重复的我已经阅读了这个问题,试图在我自己的实现中理解它。 当我阅读代码时,我不会返回一个代码让我感到困惑的函数。 这里是我的代码的function func getOpposingUsername(_ index: Int) -> String { var opposingUser: String = "" //the self.tieBetToUser just gets the randomized id from the bet in firebase don't need to worry about it self.datRef.child("Bets").child(self.tieBetToUser[index]).observe(.childAdded, with: { snapshot in guard let dict = snapshot.value as? [String: AnyHashable] […]

iOS中的NSOperation – 如何处理循环和嵌套的NSOperation调用来获取图像

我需要帮助了解如何处理以下用例: 说我正在写一个聊天应用程序: 启动应用程序 询问服务器( AFHTTPRequestOperation )给我一个所有新消息的列表 通过这些消息循环,看看我是否需要下载任何图像 如果是的话,再次调用服务器( AFImageRequestOperation )来获取图像 我不断收到我的托pipe对象“消息”不再在同一个上下文中的崩溃,但我只使用一个managedObjectContext 。 是因为我嵌套的调用方式,因为它们是asynchronous的? 我几乎积极的消息不会被删除在其他地方,因为我看到它。 有一点要注意的是,当我改变视图控制器似乎发生。 我启动应用程序,并在根视图控制器(RVC)上执行上面的步骤#2。 如果在下载所有图像之前触摸了“ MessageListViewController ”(MLVC),则那些没有完成下载的图像的关联消息突然没有managedObjectContext 。 以下是相关的代码: AFHTTPRequestOperation * operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:requestImageInfoURL success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { NSDictionary * JSONresponse = (NSDictionary *)JSON; if( [[[JSONresponse objectForKey:@"status"] uppercaseString] isEqualToString:@"ERROR"] ) { for( id<CommsObserver> observer in _observers ) [observer errorOccurred:[JSONresponse […]

查看与多个DispatchQueue.main.async使用冻结

当数据被提取并显示时, 查看冻结 。 在我的理解fetchBoard()和initUserInfo()不是并行执行。 (因为view只在fetchBoard()加载板子时加载)我担心多次使用DispatchQueue.main.async会冻结视图。 另外,我如何使它工作顺利。 class MultipleCardsController2vs2: BaseController, UICollectionViewDataSource , UICollectionViewDelegate { override func viewDidLoad() { super.viewDidLoad() let repo = GameRepository() repo.CreateGame(gameID : self.jsonGame.Id , completion: { (jsonGame, err) -> Void in if(err == ErrorCode.NoError){ DispatchQueue.main.async{ self.jsonGame = jsonGame } } }) //These are the two functions I want these 2 to work in […]

确保Firebase中的asynchronous操作已完成

我需要在swift中对Firebase执行并发查询。 在我的应用程序中允许启动另一个动作之前,如何确保循环查询已完成? 例如,第一个查询是一个简单的,简单地拉数据。 但第二个遍历一个数组,在我的firebase数据库中查找某个节点,遍历数组self.contacts : // First check if friend, and remove/add to friendsURL.observeSingleEventOfType(.Value, withBlock: { snapshot in for oneSnapshot in snapshot.children { for oneContact in contactsArray { for oneContactPhoneNum in oneContact.phoneNumbers { let phoneNumber = oneContactPhoneNum.value as! CNPhoneNumber contactNumber = phoneNumber.stringValue // Clean the number let stringArray = contactNumber!.componentsSeparatedByCharactersInSet( NSCharacterSet.decimalDigitCharacterSet().invertedSet) let newString = "1" […]