objective-c-blocks相关内容

从Objective-C块创建IMP

Objective-C中的 IMP 类型代表一个函数指针,就像我所理解的。是否有任何方法从块指针创建 IMP ?感谢您的想法。 解决方案 由于这是写入的,现在有iOS和Mac OS X中的API,直接进入IMPs。我写了一个网络日志帖子,说明API(imp_implementationWithBlock())。 一个块实际上是一个包含一点元数据,到块中包含的代码和在块内捕获的cons ..

弱自引用的泛型typeof

我试图找出一种方法使用 typeof 创建一个弱引用 self 块,以避免保留周期。 当我第一次读到这个,似乎约定是使用 __ block typeof(self)bself = self; ,它使用 __ block 进行编译,以避免保留周期不再工作, __ weak 但是 __ weak typeof(self)bself = self; 会导致错误: 类型'typeof(s ..

在Objective-C中复制块(即:将它们复制到实例变量)

我试图理解块。我得到如何正常使用它们,当直接传递给一个方法。我现在感兴趣的是取一个块,将它(说)存储在一个实例变量中并稍后调用它。 块编程指南使它听起来像我可以做这通过使用Block_copy / retain来复制块,但是当我尝试运行它我崩溃我的程序。 (void)setStoredBlock { int salt = 42; m_storedBlock = ^(int ..
发布时间:2016-12-06 16:56:22 移动开发

Cocoa阻止作为强指针vs副本

我曾经用过指针的块做了几次,因为我有强引用 我听说你应该使用copy,但在处理块作为指针,而不是与原始对象? 我从来没有得到一个抱怨从编译器,我不应该使用 @property(nonatomic,strong)MyBlock块; 但应使用 @property(nonatomic,copy)MyBlock块; 据我所知,块只是一个对象 ..

Swift Cast AnyObject to Block

所以我使用的是Salesforce SDK,并为整个SDK建立了桥接头。 它们提供了一个块语法,但没有翻译成最可用的代码。例如, func sendRESTRequest(request:SFRestRequest !, failBlock:SFRestFailBlock !, completeBlock:AnyObject!) 完整的块是AnyObject!我可以用 ..
发布时间:2016-11-29 23:48:42 移动开发

在Swift中不能弱关闭

更新:我试图写它,而不使其弱,似乎没有泄漏。所以也许这个问题已经不再需要了。 在Objective-C ARC中,要使用自身内部的闭包,块不能捕获一个强的引用本身,或者它将是一个保持循环,所以,你可以使闭包捕获一个弱引用本身,如下: //这是一个简化的例子,但有真正的使用递归闭包 int(^ fib)(int); __block __weak int(^ weak_fib)(i ..

Objective-C块,递归失败

我试图做一个函数来调用自己,但把一切都放在一个块中, 正如你所看到的,下面的函数被称为不确定的次数(直到arcrandom返回一个小于50的数字),你应该期望输出一个变量号的“RUNNING”消息,取决于的机会。 void(^ _test_closure)(void)= ^ { NSLog(@“RUNNING”); if(arc4random()%100> 50){ _tes ..
发布时间:2016-11-29 22:00:29 移动开发

ios中块(目标C)和关闭(Swift)之间的差异

在教程中,它的功能上都是相同的甚至闭包更容易,然后块和它避免了块和内存管理的复杂性,我已经经历了很多教程,但除了这些我没有得到的swift的“闭包“和Objective-C”块“。 任何人都可以深入解释这种差异。 任何帮助都会感激。 解决方案 摘录自Apple Inc.“将Swift与Cocoa和Objective-C 。“iBooks: ”Swift闭包和Objective ..
发布时间:2016-11-29 21:44:41 移动开发

在Swift中将闭包存储为变量

在Objective-C中,您可以定义一个块的输入和输出,存储传递给方法的那些块,然后再使用该块: // in .h typedef void(^ APLCalibrationProgressHandler)(float percentComplete); typedef void(^ APLCalibrationCompletionHandler)(NSInteger mea ..
发布时间:2016-11-29 21:41:33 移动开发

检查Objective-C块类型?

这主要是一个好奇心,我不确定这是什么的实际用途,但这里。 由于块也是Objective-C对象,它可以检查他们的类型?也就是说,它是否响应 isKindOfClass:消息以及如何使用该消息相对于块? 我的天真想到它可能是这样的: - (void)aMethod { typedef int(^ BlockA) int x,int y); id blockVar = .. ..

哪些库需要使用块链接到一个铛程序

我发现(下面),我需要在编译使用块的代码时使用-fblocks。 我需要链接的库,链接器解析_NSConcreteStackBlock? (在Ubuntu 9.10 AMD64上) chris @ chris-desktop:〜$ clang ctest.c ctest.c:3:25:错误:阻止支持禁用 - 使用-fblocks编译或选择支持它们的 部署目标 void ca ..
发布时间:2016-11-22 22:20:50 C/C++

Clang的块如何工作?

http://clang.llvm.org/docs/BlockLanguageSpec.txt 看起来很酷。 但是, 我不明白。 我没有看到例子。 任何人都可以在这方面启发我? 解决方案 块本质上是一种将代码和范围作为数据传递的方法。它们在某些其他语言中称为关闭和匿名函数。 这是一个文章,其中包含更多详细信息和代码示例。 ..

为什么Clang在没有return语句的块中对@try {}感到困惑?

在正常情况下,当一个块被声明返回一个值,但是 return 语句实际上出现在块中时,Clang无法编译它, 但是,当该块包含 @try {} @catch(...){} 或 @try {} @finally {} 。 p> 我发现这是使用 @weakify()和 @strongify / code>在 RACExtScope 在ReactiveCocoa,在一个块我忘了返回一个信 ..
发布时间:2016-11-22 21:45:06 移动开发

什么是C ++中的块?

可能重复: 什么是(double(^)(int))foofoo 我试着在Google和SO上搜索一个定义,我发现了使用它们但没有明确定义的例子。 “块”我的意思是插入符号( ^ )。我发现它 on (double(^)(int,long long))foo 为 cast foo into block(int,long long)返回doub ..
发布时间:2016-10-25 14:20:57 移动开发