草庐IT

block_and_release

全部标签

ios - iPhone SDK : GameKit and large files + connection lost

一段时间以来我一直在玩GameKit,但现在我面临着非常严重的困难。我要通过蓝牙发送更大的文件-1-2MB。我已经准备好了一个数据包(每个大约8kB)。我的应用按照以下方案中的描述工作:iPhone-sendingheader:filedividedinto25partsiPod-receivedheader:OKIgotitwaitingfor25partsiPhone-sendingpart#1iPod-receivedpart#1sendnextiPhone-sendingpart#2iPod-receivedpart#2sendnext...iPhone-sendingpart

objective-c - Objective-C : Cell text disappears after scrolling out of screen (and back)

我正在创建一个带有UITableview的Controller,其中包含2个部分。在第二部分中,我有一个用户列表,当我单击特定行时,我想为列表中的用户添加一个复选标记。我有一个问题,在我点击用户并将单元格滚动出页面后,单元格返回“名称”字段为空白(请参见下面的屏幕截图)。我知道这与细胞的重复使用方式有关,但我无法理解确切的问题。我的代码贴在下面。有什么建议吗?-(UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexPath:(NSIndexPath*)indexPath{staticNSString*Sh

objective-c - 构造带 block 参数的 NSInvocation

我正在尝试将Block作为参数发送给NSInvocation调用的方法(对于上下文,它由NSInvocationOperation触发)。调用应该保留参数,它似乎适用于“常规”对象参数,但Block的retainCount保持在1。我可以在方法调用中使用它之后释放它,但如果在调用操作之前队列被解散,理论上可能会泄漏它。部分代码:NSInvocationOperation*load=[[NSInvocationOperationalloc]initWithInvocation:loadInvoc];NSAssert([loadInvocargumentsRetained],@"Argum

ios - 带有 UI 回调的循环 block

我有一个耗时的过程,并且有一个进度指示器向用户显示事情已经进行了多长时间。因为我必须在主线程上执行消费操作,所以我无法选择在更新之间简单地在主队列上分派(dispatch)更新。我必须暂时切换到后台线程,以便在切换回并继续之前让UI更新。我有的就是这个,但是感觉很不正统。有没有更好的方法来执行我所缺少的“带有UI回调的循环block”?我也不完全确定这是否最终会释放block,但那是另一回事了。__blockNSUIntegeri=0;__blockdispatch_block_tobtainBlock;obtainBlock=[^{[selfobtainAssetAtIndex:i]

objective-c - 是否写入文件 :atomically: blocks asynchronous reading?

在使用我的应用程序时,有几次我在后台处理一些大数据。(在用户需要时准备好。某种索引。)当这个后台进程完成时,它需要将数据保存在缓存文件中,但由于这真的很大,所以需要几秒钟。但同时用户可能会打开一些显示从磁盘加载的图像和文本的对话框。如果在保存后台进程数据的同时发生这种情况,则用户界面需要等待保存过程完成。(这是不希望的,因为用户必须等待3-4秒,直到从磁盘加载图像和文本!)所以我正在寻找一种方法来限制写入磁盘。我想将数据分成block,并在保存不同block之间插入一个短暂的延迟。在此延迟中,用户界面将能够加载所需的文本和图像,因此用户不会意识到延迟。目前我正在使用[[arraycom

ios - Sphero 连接 : Should I call setupRobotConnection and handleRobotOnline in each UIViewController or only once per app?

我创建了一个iOS应用程序,其中包含3个启用了Sphero的流程。我最终在每个viewDidLoad中在线重写了setupRobotConnection和handleRobot,然后在每个prepareForSegue方法中关闭了连接。它在大多数情况下都有效,但NavigationController的后退按钮可能会把事情搞砸。我认为这不是连接到Sphero并保持连接的最佳方式。对于我的应用程序,每个流程对handleRobotOnline的需求略有不同流程1:无驱动,需要dataStreaming和AsyncData流程2:用于发送命令的多人游戏类。流程3:使用需要数据流和异步数据的

ios - Objective-C 中的一个奇怪的 block 问题

我有一个AuthService类,它有一个方法来执行异步连接以登录。此类实现了NSURLConnectionDataDelegate协议(protocol),因此当服务器响应时,它会调用先前由ViewController设置的完成处理程序来更新UI。这是完成处理程序的定义@propertyvoid(^completionHandler)(LoginResult*result);这是类接收服务器响应的时候-(void)connection:(NSURLConnection*)connectiondidReceiveData:(NSData*)data{NSString*response=

iphone - UIFont fontWithName : residing on heap and never destroyed

NSMutableArray*fontsDetails=[[NSMutableArrayalloc]init];[fontsDetailsaddObject:[UIFontsystemFontOfSize:28]];NSArray*fontFamilies=[UIFontfamilyNames];for(inti=0;i我在Controller的viewDidLoad中使用这段代码,有了这段代码,第一次和第二次运行之间的堆射击差异增加了5mb,并且永远不会下降。(随后的堆射击差异较低)。我在堆射击的回溯中找到[UIFontfontWithName:],我运行了泄漏分析器并且没有泄漏。所

ios - 哪个更适合做异步?委托(delegate)还是 block ?

我有一个模型Model,它通过JSONAPI加载一些东西,然后我以某种方式在UI中显示它。假设一次只有一个current实例(根据时间从服务器获取),所以我有一个看起来像这样的方法调用[Modelcurrent]。问题是我需要在加载数据时做一些事情,这导致我有两种可能的解决方案:Delegation-类似于[ModelcurrentWithDelegate:self],我将在self上实现一个具有回调的协议(protocol)block-[ModelcurrentWithSuccess:^(idresponse){...}error:^(NSError*error){...}]因为我是

ios - 我真的必须创建两个版本的变量才能使用 objective-c block 吗?

有很多关于block和保留周期的问题......他们让我整理了以下代码:-(void)promptNewName{DTAlertView*prompt=[[DTAlertViewalloc]initWithTitle:@"Name"message:@"foobar"];prompt.alertViewStyle=UIAlertViewStylePlainTextInput;[promptaddCancelButtonWithTitle:NSLocalizedString(@"Cancel",nil)block:^{}];__weakDTAlertView*weakPrompt=prom