草庐IT

ios - 如何实现通用的 do-try-catch block 以捕获操作中抛出的所有错误

在Swift3.0中,如何实现通用的do-try-catchblock来捕获操作引发的所有错误。Apple文档说要实现类型为ErrorType的枚举器,它列出了抛出的错误。假设如果我们不知道操作会抛出什么样的错误,那么如何实现它。以下代码仅用于说明目的。在这里我可以捕捉到错误,但我不知道是什么导致了这个错误。在objective-c中,我们可以得到错误发生的确切原因,但在这里我们只得到我们分配给它的信息。enumAwfulError:ErrorType{caseCannotConvertStringToIntegertypecasegeneral(String)}funcConvert

ios - 如何获取 block 内变量的值

有没有办法用completionHandler检查“type”变量的值。-(void)sendApiMethod:(NSString*)apiNameApiType:(NSString*)type{[SendAPIsetAPIWithName:@"APIName"completionHandler:^(NSArray*errors){if([typeisEqualToString:@"Login"]){///CallSomeOtherfunction}}];} 最佳答案 我写了一小段代码来验证是否有效(只读你的问题我会说是作为Dro

objective-c - 在 block 保留周期中调用函数

如果我从block内部调用的函数引用“self”,是否会创建一个保留循环?__weakidweakSelf=self;-(void)firstFunction{idstrongSelf=weakSelf;if(!strongSelf)return;[anObjectperformBlock:^{[strongSelfsecondFunction];}];}-(void)secondFunction{[selfdoSomeCrazyStuff];self.counter++;//etc.}我在“secondFunction”中调用“self”,是否需要将我的弱指针传递给此函数并改为使用它

ios - 在同一线程上运行 block

我遇到了一些我无法弄清楚的问题。如果我有一个带有Block参数的方法签名,其中有一个回调,并且在我的方法中我使用了一个有另一个Block的API,API执行async并且我的代码继续并调用我的回调方法.这让我的ViewController知道一切都已完成,而实际上通常不是因为APIblock。由于我的方法总是调用回调方法(并且异步运行),我可以强制使用block的API调用同步运行吗?ViewController[self.tagReposync:^(BOOLfinished){if(finished){NSLog(@"Synccompleted.");if(self.tagRepo.

ios - 手动内存管理中的弱/强 "dance"

想象以下使用手动内存管理(也称为非ARC)的场景:我有一个将block传递给类方法的VC。在执行block之前,VC从UINavigationController中弹出。__blockMyVC*weakSelf=self形式的弱引用被传递给block,然后block被转换为MyVC*strongSelf=weakSelf(又名弱/强舞蹈)。该block永远不会被任何干预措施保留。在这种情况下,我在代码中看到的是:VC的dealloc在弹出时调用。block最终被调用。应用程序崩溃是因为我正在访问垃圾(strongSelf指向它)。我的问题是:我不希望我的VC在该block最终执行之前保

ios - 如何定位 block 代码

在DebugMemoryGraph中,我有一个由__NSMallocBlock__捕获的自定义View该block的描述只是那么现在如何定位block代码呢? 最佳答案 您应该编辑方案设置,并在“诊断”»“日志记录”下启用“Malloc堆栈”。然后,选择“内存检查器”时,您会看到堆栈跟踪:您甚至可以单击堆栈中您的方法名称旁边的箭头,它将跳转到分配此block的那部分代码。在我上面的示例中,该block是在viewDidLoad中分配的。确保在完成诊断后关闭此设置。 关于ios-如何定位b

iphone - iOS 绘制 GridView 以拖放捕捉到该网格的对象

我正在从事一个需要将自定义View分割成正方形的项目。您需要能够将另一个View拖到它上面,当您放下该对象时,它会捕捉到网格方block。我还需要能够遍历网格中的每个方block并确定对象是否在该特定网格方block内。我意识到这是一个有点普遍的问题,但我只是在寻找关于从哪里开始的任何方向,可能已经存在的类或框架以供引用。任何方向都将不胜感激。谢谢。 最佳答案 问题#1:用户需要能够将另一个View拖到它上面,当您放下该对象时,它会捕捉到网格方block。假设您正在拖动一个UIView。在UIView的touchesEnded上,我

ios - 在 Xcode 9 中添加 block 注释的键盘快捷方式?

我正在向项目添加文档,但没有找到任何添加block注释的快捷方式。我读过MarkupFormattingReferenceguide但找不到捷径。我正在使用Option⌥+Command⌘+/添加评论,但它添加了///对于每一行。///Initializer//////-Parameters:///-userId:UserId///-userName:UserName///-applicationVersion:ApplicarionVersioninit(_userId:String,withUserNameuserName:String,withApplicationVersion

iphone - 有没有其他方法可以使用动画 block 来执行此动画?

我目前正在通过执行以下操作来执行curl动画:CATransition*animation=[CATransitionanimation];animation.type=@"pageCurl";animation.subtype=kCATransitionFromTop;animation.fillMode=kCAFillModeForwards;animation.duration=1;animation.timingFunction=[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseIn];[[self

ios - 当 CAEmitterLayer 的 CAEmitter Cells 的生命周期结束时,你如何移除它——而不是重复直到你从 super 层中移除它

我正在以稍微改变的方式使用通用代码(来自iOSFireworks演示)。我在UIView的子类中有以下内容。我想要的是让烟花出现在用户触摸(不是用力)的地方,并在CAEmitterLayer/CAEmitterCells“生命周期”的长度内播放。相反,当我将它添加到addSublayer时,这会立即开始——就像我确信它的意思一样。但是,我想以稍微不同的方式使用它。有没有一种方法可以更改它,以便有一个带有完成block的CATransaction(到removeFromSuperlayer)或类似的东西?欢迎任何想法。#import"FireworksView.h"@implementa