- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
你好,对于我正在处理的项目,我必须在后台执行 n-SLRequest,所以我要做的是将这些请求添加到 NSOperationQueue,如下面的代码所示
- (void)performBatchRequest:(void(^)(void))completion
{
NSURL *url = [NSURL URLWithString:@"https://api.twitter.com/1.1/direct_messages/new.json"];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
ACAccount *account = [self getStoredAccount];
for (NSDictionary *user in self.inviteList)
{
[queue addOperationWithBlock:^
{
NSDictionary *params = @{@"screen_name" :user[@"name"],@"text":@"message" }
SLRequest *inviteRequest = [SLRequest requestForServiceType:SLServiceTypeTwitter
requestMethod:SLRequestMethodPOST
URL:url
parameters:];
[inviteRequest setAccount:account];
[inviteRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error)
{
if (error)
{
NSLog(@"Errror");
}
}];
}];
}
self.inviteList = nil;
if (completion)
{
completion();
}
}
现在我想知道这是否是我可以用来在后台执行多个 SLRequest 的最佳方法。非常感谢任何建议/更正
最佳答案
您的完成处理程序不会像您期望的那样工作:因为请求都是异步启动的,您会立即到达 if (completion) { completion();
语句 - 但还没有完成。
有很多方法可以处理这种异步模式。目标是发出一些异步任务完成的信号。一种简单的方法是设置一个初始等于任务数的计数器。每当一个任务完成(或失败)时,计数器加一(仔细同步,例如在专用队列或主线程上执行)。当计数器达到零时,调用您的完成处理程序。
否则,该方法是可行的。
但是,您可能希望明确控制底层网络层执行的最大并发请求数。如果延迟是一个问题,您应该增加并发请求的数量。
NSOperationQueue
有一个属性 maxConcurrentOperations
,它默认等于 CPU 的数量。
最大并发请求可能是两个(对于 CPU 绑定(bind)队列和两个内核)。无论如何,在您的场景中,这恰好没问题。但是,最佳并发请求数取决于许多因素,这些因素可能超出您的控制范围:例如服务器或连接质量。
如果您有非常大的数据要传输,我会设置为 1 - 因为限制因素是带宽 - 而不是延迟。
否则,最多 4 或 5 个。并发请求越多,应用中使用的内存就越多!
注意:NSULRConnection
可能会强制设置最大并发请求的上限,这也取决于主机或 IP 或其他因素。
结论:
给定一个具有平均连接质量的普通环境,如果您尝试使用大量并发请求进行优化,用户将不会注意到太多改进。但设置较大的数字会增加您的应用因内存问题而卡住的风险。
把它留在两个,然后开心。 ;)
关于ios - NSOperationQueue 批处理 SLRequests,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18779805/
我正在使用 SLRequest 发布到用户的 Twitter 流,下面的代码可以在模拟器中发布,但不能在实际设备上发布。 //create the SLRequest and post to the
我一直在尝试利用内置的 iOS 帐户和 Twitter 框架检索 Twitter 用户数据。 我已成功访问手机上的用户帐户。但是,当向 twitter 发出 SLRequest 时,我收到未经身份验证
你好,对于我正在处理的项目,我必须在后台执行 n-SLRequest,所以我要做的是将这些请求添加到 NSOperationQueue,如下面的代码所示 - (void)performBatchReq
使用 SLRequest 与 Facebook 集成时是否强制使用 app Id 实际上我没有 App id,那么是否可以使用 SLRequest 集成 Facebook使用 app id 因为我没有
我正在使用 iOS 社交框架和 SLRequest 对象向 Twitter/Facebook API 发出请求- http://developer.apple.com/library/ios/#doc
我正在尝试在我的iOS应用程序中实现“在Twitter上关注我们”。这是我的代码。但是它给出错误“无法准备URL请求”。请帮忙! ACAccountStore *accountStore = [[AC
如何使用 SLRequest 将 UIImage 附加到 Facebook 上的帖子。这是我的代码: SLRequest *facebookRequest = [SLRequest requestFo
我有两种方法可以将图片分享到 Facebook。 SDK 方式(工作完美): FBSDKSharePhotoContent *content = [[FBSDKSharePhotoContent al
我是 Sam。目前我正在我的应用程序中开发 Twitter 分享。我需要在没有 ComposeController 的情况下实现它。我需要与来自社交框架的 SLRequest 集成。我使用的代码如下
我正在使用适用于 iOS 6 的新社交 API 实现 Facebook 视频上传,一切正常,只是我没有找到一种方法来了解上传的进度……Apple 似乎唯一的 API提供的是,如果上传完成或者失败,有可
我想在 twitter 中使用 SLRequest 获取用户个人资料信息? 目前我正在编码 NSURL *url = [NSURL URLWithString:@"https://api.twit
我正在尝试使用 SLRequest iOS API 获取 facebook 数据,这似乎工作正常 - NSDictionary *parameters = @{}; NSURL *feedURL =
我正在尝试使用 SLRequest 以编程方式将图像(从 iOS 设备)上传到用户的 Twitter 帐户。推文文本已上传到推文中,但图片从未出现。响应状态码为200。 显然基础工作正常,否则推文根本
我正在尝试分享动画 GIF 但默认 UIActivityViewController Twitter 分享 doesn't support但它会将其“缩小”为静态 JPG,我必须按照 this art
我已经使用 SLRequest 获取个人资料信息,并且我遵循了 Getting user profile picture in iOS6?获取个人资料图片。但它返回 50x50 图像尺寸。我需要大尺寸
在使用 SLRequest 时,有一些关于在 iOS 应用程序中发送推文的很棒的教程。然而,他们中的大多数人只是从 Twitter 帐户中提取最后一个对象。由于在 iOS 设置中可以登录多个 Twit
我目前正在使用 SLRequest 让用户喜欢我们的应用程序页面以换取虚拟货币/新角色。我需要设置哪些参数才能允许这样做?我已经获得了 public_actions 权限。 我发现了以下内容,但我仍然
我有上传照片的应用程序,就像在 Instagram 应用程序中一样。首先我的应用上传照片并返回链接。然后在状态消息中发送链接。当我在我的 iPhone 上测试时,一切正常,但当我在另一部 iPhone
我正在尝试将 Twitter 时间轴添加到我的 iOS 应用程序中。推特在这里给出了官方的示例代码: https://dev.twitter.com/docs/ios/making-api-reque
让我澄清一下。我没有使用 Facebook SDK。我使用 iOS SDK 的 Social.framework 和 ACAccountStore 访问 Facebook 帐户,并使用它/它们发帖。
我是一名优秀的程序员,十分优秀!