问题标签 [objective-c-blocks]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - 使用块将 NSDictionary 变成字符串?
我确信有一种方法可以使用块来做到这一点,但我无法弄清楚。我想将 NSDictionary 转换为 url 样式的参数字符串。如果我有一个看起来像这样的 NSDictionary:
那我怎么把它变成一个看起来像这样的字符串:
编辑
感谢您提供以下线索。这应该这样做:
xcode - Xcode 链接器和块:未定义符号“___block_global_1”
我正在尝试在 Xcode 3.2.4 中构建应用程序并收到以下链接器错误:
我无法解释我在源文件中所做的可能导致错误的操作。我确实有一个我定义为全局变量的块,如下所示:
这个块是在源代码的一个空命名空间中定义的(我正在编译 Objective-C++。)一切都编译没有错误。
更新:将块移动为引用它的例程的局部变量是一种可行的(尽管不是首选)解决方法。
是什么赋予了?
iphone - UIButton 块相当于 addTarget:action:forControlEvents: 方法?
我环顾四周,但在互联网上找不到这个,也没有在 Apple 文档的任何地方找到,所以我猜它不存在。
但是是否有一个 iOS4 块等效 API:
我想这可以使用一个类别来实现,但由于极度懒惰,我不想自己写这个:)
像这样的东西会很棒:
objective-c - 如何评论 Apple 对 Doxygen 的块扩展?
Doxygen 在其 1.7.2 版本的更新日志中宣布支持 Apple 的块扩展。我想知道生成文档的语法是什么。我找不到任何提示 - 在 doxygen 配置文件(版本 1.7.2)中也没有。
更新: 1.7.5 版于 2011 年 8 月 14 日发布。我仍然没有找到如何为 Apple 块编写文档。
objective-c - Objective-c 中的 Smalltalk 块?
Objective-C 是否支持“a la Smalltalk”块?
在 Smalltalk 中,块类似于其他语言中的“闭包”或“lambda 表达式”或“无名函数”。
ios - 我可以使用 Objective-C 块作为属性吗?
是否可以使用标准属性语法将块作为属性?
ARC有什么变化吗?
objective-c - Objective-C 块类型作为返回值
我如何写以下内容:
没有typedef?
iphone - EXC_BAD_ACCESS 如果我直接调用一个 Objective-C 块
继续尝试理解 Objective-C 中的块。我有以下功能:
当我尝试执行以下操作时:
我得到一个 EXC_BAD_ACCESS。但是,如果我改为执行以下操作:
它工作正常。第一种情况有什么问题?
objective-c - Objective C Blocks:有没有办法避免“自我”被保留?
我试图尽可能简洁地写下来,但这并不容易描述——所以感谢阅读=)
我是 Open Source iPhone Framework Sparrow的主要开发者。Sparrow 以 Flash AS3 库为模型,因此具有与 AS3 类似的事件系统。目前,该系统通过指定选择器来工作——但我希望通过允许使用块作为事件侦听器来扩展该系统。但是,我遇到了内存管理问题。
我将向您展示一个典型的事件用例——就像现在处理的那样。
这很简单:当一个对象被添加到显示列表时,它会收到一个事件。目前,基类将事件监听器记录在一个 NSInvocation-objects 数组中。NSInvocation 以不保留其目标和参数的方式创建。(用户可以这样做,但在 99% 的情况下,这不是必需的)。
不保留这些对象是有意识的选择:否则,即使用户在 dealloc 方法中删除了事件侦听器,上面的代码也会导致内存泄漏!原因如下:
乍一看,这似乎很好:init 方法中的保留与 dealloc 方法中的释放配对。但是,这不起作用,因为永远不会调用 dealloc 方法,因为保留计数永远不会达到零!
正如我所说,'addEventListener...'-方法确实出于这个原因,在其默认版本中不保留任何内容。由于事件的工作方式(它们几乎总是由“自我”或子对象分派,无论如何都会保留),这不是问题。
然而,现在我们来到了问题的核心部分:我不能用积木来做到这一点。查看事件处理的块变体,我希望它具有:
这看起来很棒,而且很容易使用。但是:当用户在“self”上调用方法或使用块中的成员变量时——嗯,几乎总是这样——块将自动保留“self”,并且对象永远不会被释放.
现在,我知道任何用户都可以通过对 self 进行 __block 引用来纠正这个问题,如下所示:
但是,老实说,我相信几乎所有用户都不知道这样做或忘记这样做。一个 API 不仅要易于使用,而且要难以误用,这显然违反了这一原则。API 的用户肯定会滥用它。
让我烦恼的是,我知道不必保留“自我”——它可以在我当前的实现中工作而无需保留它。所以我想告诉块他不需要保留自我——我,图书馆,应该告诉块,这样用户就不必考虑它了。
在我的研究中,我还没有找到这样做的方法。而且我想不出一种方法来改变我的架构以适应块的限制。
有人知道我能做些什么吗?
即使您还没有,也感谢您阅读本文——我知道这是一个冗长的问题;-)
ios - 带有 NSDictionary 项的 NSMutableArray 中的唯一项?
如果你有一个带有三个 NSDictionary 的 NSMutableArray,如下所示:
我如何把它变成一个只有两个字符串 { steve, paul } 的数组。换句话说,来自原始 NSMutableArray 的唯一名称?有没有办法使用块来做到这一点?