问题标签 [nsinvocation]

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.

0 投票
1 回答
893 浏览

image - 将图像异步加载到 tableview 单元格中

在互联网上搜索了数周并且堆栈中也有很多帖子之后,我似乎找不到在我的项目中实现这一点的方法。
我的 Dropbox 帐户中有一个 plist。在名为“cellPic”的字典之一下的 plist 中的字符串之一。
我想在表格单元格上显示我在我的保管箱中拥有的商店的图片。
plist 已下载到我的文档路径:

到目前为止一切正常...

在此方法下的 TableViewController 中,我想为单元格实现异步图像加载。

我的目标是异步读取/下载图像,但我不知道它是如何进行的 - 我需要在我的文档路径上读取我的 plist 中包含图片完整 url 地址的字符串还是我需要下载图片从服务器到我的文档,然后将其读取到单元格中?
在我的情况下 - 单元格的位置正在改变 cau,它们按用户位置排序(离用户最近的商店位于表格顶部),这就是为什么我认为我需要从我的 plist 中读取它的原因。
这是我的图片网址之一:http
://dl.dropbox.com/u/4082823/AppsFiles/Black/ramat-h​​asharon.png 最好的方法是什么以及如何一次下载所有 png 图像(如果需要的话)?
我已经尝试使用本教程来完成它,但它根本没有成功。
http://www.switchonthecode.com/tutorials/loading-images-asynchronously-on-iphone-using-nsinvocationoperation
帮助将被appriciated!
谢谢!

0 投票
4 回答
18052 浏览

objective-c - 调用块 iOS

我尝试调用一些块,但我遇到了 EXC_BAD_ACCESS。

关于为什么会发生这种情况的任何想法?

0 投票
0 回答
783 浏览

objective-c - 将 NSUndoManager 与 prepareWithInvocationTarget、手势和对象一起使用

我有一个绘图应用程序。我想实现撤消/重做。尽管我在存储撤消/重做的原始值和新值时遇到了困难。

使用手势我需要存储一些东西:变换、居中、属性对话框,我需要存储更多、颜色、字体、字体大小、轮廓、轮廓颜色、文本本身等。

我创建了一个NSMutableDictionary用户可以在单个手势/属性弹出窗口中更改的属性。

我想使用Rob 的答案NSUndoManager和旋转手势,尽管使用他的解决方案与 一起使用CGAffineTransform,当作为参数发送时 prepareWithInvocationTarget,它不是对象,只是将CGAffineTransform结构的副本放在撤消/重做堆栈上。

虽然在使用prepareWithInvocationTargetNSMutableDictionary传入的字典时(OriginalAttribs,newAttribs)不会保留。我不能将它们作为本地 iVar,因为它们会随着绘图对象上的每个动作而改变。

似乎我想retainArguments用作其中的一部分,NSInvocation但我真的不想保留它们。我需要他们的副本。

它的手势使这变得困难,因为我无法继续设置 OrigianlCenter, OriginalTransform,因为它在手势处于活动状态时会发生变化。

更新 我找到了这个链接,它似乎与我想做的类似。

我像这样设置我的 NSUndoManager:

然后我得到一个运行时错误:

undoAttributesWithOriginalAttributes:newAttributes:是我为我的 NSInvocation 对象设置的选择器。根据这里的文档,它说它应该将它传递给自我(目标),而不是撤消管理器自我?

0 投票
1 回答
1598 浏览

objective-c - iOS NSInvocation setArgument:atIndex:不适用于 ARM 构建上的 struct

我有一个奇怪的问题,即使用包含未对齐的双精度或任何 64 位类型的结构设置 NSInvocation 的参数(我在结构的开头用 char 偏移它)。问题是在设置参数后清除了一些字节。此问题出现在 ARM7 上,但不在 iOS 模拟器中。

我正在使用 LLVM 3.0 和 Xcode 4.2

这是我的代码和测试结果:

NSInvocation+Extension.h


NSInvocation+Extension.m


声明要调用的方法和数据结构


调用代码


ARM7 上 buf 的内容(字节 8、9、10 和 11 设置为零,这会弄乱双精度值)

41 00 00 00 00 00 00 00 29 8C 67 41 42 00 00 00 02 00 00 00 43 00 00 00

i386 模拟器上的 buf 内容(如预期)

41 00 00 00 00 00 00 C0 29 8C 67 41 42 00 00 00 02 00 00 00 43 00 00 00


0 投票
3 回答
2391 浏览

ios - 如何使用将指向对象的指针作为参数的方法创建 NSInvocation 对象

我想使用一个将指向 NSError 对象的指针作为参数的方法创建一个 NSInvocation 对象。这方面的一个例子是方法 -

我明白我会像这样设置我的调用

对于 writeToFile:Options:Error:最后一个参数期望接收指针而不是对象。因此,执行以下操作不起作用 -

解决方案可能是创建指向指针的指针似乎是合乎逻辑的,但这会导致编译器警告。我不确定如何正确执行它并且不会产生内存管理问题。

0 投票
1 回答
2127 浏览

objective-c - NSInvocation & NSError - __autoreleasing & memory crasher

在学习 NSInvocations 时,我对内存管理的理解似乎存在差距。

这是一个示例项目:

当然,我在这里所做的只是建立一个调用对象作为 NSString 类方法的属性

这是有道理的,尤其是在阅读了这篇博文之后,关于为什么我需要通过声明并将地址分配给 **errorPointer 来处理 NSError 对象。有点难以掌握的是这里发生的 __autoreleasing 和内存管理。

**errorPointer 变量不是对象,因此它没有保留计数。它只是存储指向 NSError 对象的内存地址的内存。我知道 stringWith... 方法将分配、初始化和自动释放 NSError 对象,并设置 *errorPointer = 分配的内存。正如您稍后将看到的,NSError 对象变得不可访问。这是...

  • ...因为自动释放池已经耗尽?
  • ...因为ARC填写了对stringWith ...的alloc + init的“释放”调用?

那么让我们来看看调用是如何“工作”的

这让我大开眼界(有点令人不安),因为我以为我知道在内存管理方面我到底在做什么!

为了解决我的崩溃,我能做的最好的事情就是从 init 方法中拉出 NSError *error 变量,并使其成为全局变量。这需要我在 **errorPointer 上将属性从 __autoreleasing 更改为 __strong。但是,很明显,这种修复并不理想,尤其是考虑到一个操作队列中可能会多次重用 NSInvocations。它也只是有点证实了我对 *error 正在被释放的怀疑。

作为最终的 WTF,我尝试使用 __bridge casts 玩了一下,但是 1. 我不确定这是否是我需要的,以及 2. 置换后我找不到一个有效的。

我希望有一些见解可以帮助我更好地理解为什么这一切都没有点击。

0 投票
2 回答
2967 浏览

objective-c - iOS - 不能使用“超级”作为参考?

我正在尝试使用 anNSInvocation从子类调用超类方法。涉及的代码相对简单,如下所示:

这对我来说似乎有点奇怪,因为我一直认为它super遵循几乎相同的规则self(即它可以被视为对相关对象的直接引用并分配给变量,用作返回值等) . 在实践中似乎并非如此。

无论如何,有什么简单的方法可以让我NSInvocation以超类实现为目标(我不能self用作目标,因为子类覆盖了超类方法),还是我需要寻找其他方法?

0 投票
2 回答
632 浏览

objective-c - 协助将 NSInvocation 代码转换为 ARC 兼容(已经是 Objective-C)

我从 Matt Gallagher 那里找到了一些非常棒的代码,用于使 Undo 与 NSInvocation 一起工作。尽管现在管理层希望我们对所有代码都使用 ARC,但我们现在正在将所有代码转换为 ARC。这最后一块就是剩下的了。马特,没有时间做转换,所以我希望我能在这里得到一些帮助。

任何援助将不胜感激!

谢谢!

NSInvocation(ForwardedConstruction).h

NSInvocation(ForwardedConstruction).m

0 投票
1 回答
165 浏览

objective-c - 是否可以将另一个类的方法设置为 NSInvocation 对象的选择器属性?

我在 ClassA 中有一个名为 Selector1 的方法,

在 ClassB 中,我想创建一个 NSInvocation 对象并将 Selector1 设置为对象的选择器。这可能吗?我不知道设置这个的正确方法。

我试图在 ClassB 中使用的代码是这样的:

0 投票
2 回答
1169 浏览

ios - 有没有办法观察对象(iOS)上调用的每个消息调用?

每次向对象发送消息时,我只想获取选择器名称以及参数、发送者或 NSInvocation 实例。可能的?像 forwardInvocation: 之类的东西,但在每种情况下(每个方法调用)。