问题标签 [performselector]

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 回答
51 浏览

iphone - 无法处理来自子类的 UIAction

我正在为soap webservice 创建一个类,以从.net webserver 获取一些信息。

为此,我正在使用NSMutableURLRequest并使用NSXmlParser.

现在我像这样从 myviewcontroller.m 类调用该 Web 服务类。

我将结果添加到数组以在 myviewcontroller.m 类中使用该数组详细信息。

但是当我在此方法之后立即使用该数组时,我没有将详细信息放入数组中。

我正在尝试通过在 2 秒后调用另一种方法来使用这样的数组。

我知道它的原因,解析需要时间。

我正在尝试另一种方式,例如我正在为 viewcontroller 创建对象并像这样调用此方法。

现在我可以获取详细信息,但我无法处理 UIActivities,例如发出警报。

虽然如上述performSelector方法中所述,我可以处理所有 UIActivities。

但是我需要在完成结果解析后调用该方法。

谁能帮帮我吗。

谢谢你。

0 投票
2 回答
365 浏览

ios - 与 performSelector 相关

我是 iPhone 应用程序的新手。我想在按下按钮时每 2 秒显示一条消息为此我正在使用此代码。

此代码只能工作一次。这意味着只调用一次。你能帮我解决这个问题吗?

0 投票
1 回答
369 浏览

iphone - 线程和自动释放池问题

据我了解,有几种方法可以发送要在线程中执行的任务。我最常用的是:

1) performSelector:withObject:afterDelay:

2) performSelectorOnMainThread:withObject:waitUntilDone:

3) performSelectorInBackground:withObject:

4) [NSThread detachNewThreadSelector:toTarget:withObject:]

我的第一个问题是,除了明显的参数差异之外,1) 和 2) 之间有什么区别?它们实际上是否都在主线程中工作(其自动释放池是在 main.m 中自动创建的)?我刚刚从某人在 Stackoverflow 上的帖子中读到方法 1) 实际上是在一个新线程中工作,因此应该为其选择器方法创建一个自动释放池。这个对吗?我一直在使用 1) 很多,主要是为了利用延迟参数,但我从未为它们创建自动释放池。没有发生任何灾难性的事情。

接下来,3) 和 4) 都在单独的线程中执行任务。我听说 UI 的东西不应该在这些线程中完成,但我对什么是严格的 UI 感到困惑。我试图编写代码以在表格视图从导航控制器模态启动时基本上播放重复加载动画。然后动画在 tableview 控制器的 viewDidLoad 方法中停止。最初,我只是将启动动画的代码粘贴在启动模态视图的代码行之上。发生的事情是动画从未播放过。

然后我尝试了以下方法,它奏效了......

动画会一直播放,直到 SettingsViewController 视图完全启动。但是启动像这样的模态视图是否算作“UI”并且应该避免?此外,每次启动模式视图时,我都会在 Instruments 中遇到一些奇怪的内存泄漏错误。但它来自那些“系统库”之一,我被告知很难调试。这里可能出了什么问题?

很抱歉这篇令人尴尬的长帖子。任何帮助将不胜感激!

0 投票
1 回答
855 浏览

ios - 为什么 `cancelPreviousRequestsWithTarget` 不取消 NSTimer?

我安排一个NSTimer这样的实例:

我可以叫invalidateNSTimer阻止它开火,但是

不停止计时器。我已经检查过并且[NSRunLoop currentRunLoop]完全一样(正如预期的那样,这些是对用户点击的响应),当然self实例总是相同的。为什么不cancel取消?

0 投票
1 回答
1464 浏览

iphone - 如何检查是否有 performSelector: waiting to be executed?

在我的 iPhone 应用程序中,我有几个地方可以做

[object performSelector: withObject: afterDelay:]

称呼。所有这些都导致相同的方法。现在,在该方法中,我只想在最近一次调用它时执行一些代码。如果它是第一个,我可以做[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(thisMethod) object:nil]并确保它被调用一次。

但是,有没有办法判断是否还有其他方法调用等待执行?

我可以在此类中使用一个计数器,每次在延迟后设置此执行时我都会递增,然后在每次调用开始时递减它,并且仅在此计数器为零时才执行代码。但我想知道这是否是最好/可接受的方法......

0 投票
2 回答
4123 浏览

objective-c - 使用带有三个或更多参数的 performSelector?

各种performSelector:...方法最多可以处理传递给指定选择器的两个参数。如果我需要传递三个或更多参数,我该怎么办?

0 投票
3 回答
4079 浏览

objective-c - 在后台运行特定方法...但是

想象一下,我想在后台调用这个方法。

我对含糊不清感到抱歉,但我会尽量做到清楚。以下是我想要做的。我有一个视图,但它上面有这个按钮和一个空的 UITableView。然后我希望BackGroundMethod 运行背景,在运行时我希望能够单击按钮并触发buttonClicked 方法,该方法会将数据发送到UITableView。

以下我尝试了负面结果:

这将启动BackGroundMethod,但它不会加载我从服务器询问的数据。

这会启动BackGroundMethod,但由于某种原因它不允许我单击按钮,它允许单击按钮,但是我在方法触发点击时所做的每一个动作都放在它后面的队列中,所以只有当backgroundmethod完成了我按下按钮的 x 次处理。

有谁知道什么可能会阻止使用上述任何 performSelector 函数以及如何解决它们。或者有一个完整的(也许更好的)想法..?

0 投票
2 回答
1082 浏览

ios - 这个对吗?使用 performSelector 而不是直接调用方法

我正在尝试使用此方法关闭超级视图[self.superview buttonPressedClose];

我已经在我的超级视图中实现了该方法,并且一切正常。

但它在编译期间给了我一个警告“ UIView 可能无法响应 'buttonPressedClose' ”。

如果我将其更改为以下行,它不会给我警报,但这是正确的方法吗?

谢谢。

**编辑错字..

0 投票
2 回答
801 浏览

iphone - 在 C++ 类方法上执行选择器?

我可以以某种方式在 c++ 类成员函数上调用 performSelector 吗?

我正在考虑创建一个虚拟 objc 类,它将接收 performSelector 调用,并且这个虚拟类调用所需的 c++ 成员函数。

但是有更好的方法吗?

(我不想立即调用该方法的原因是因为线程)

0 投票
2 回答
2159 浏览

iphone - performSelectorOnMainThread 不执行

在这件事上扯出我的头发,任何想法或建议将不胜感激。

performSelectorOnMainThread:withObject:waitUntilDone:我有一个从子线程调用自身的对象。这在 95% 的情况下都可以正常工作。自 iOS 测试版到现在发布以来,每隔一段时间,设备都会拒绝执行performSelectorOnMainThread:withObject:waitUntilDone:调用......没有错误消息,它不会崩溃,我无法让设备进入“失败”的状态但是一旦它在那里它会继续失败,直到我删除并重新安装该应用程序,或者强制它退出,然后调整它的位置服务限额,然后再次启动它,然后重新调整它的位置服务再次恢复正常.. . 重新启动设备并不能修复它。重新安装而不先删除并不能解决它。这很奇怪......我知道它大部分时间都可以正常工作,因为大多数设备都没有问题,但是有些设备会定期出现故障(可能每 3 或 4 天)。performSelectorOnMainThread:withObject:waitUntilDone:没有调用它应该调用的方法,因为我现在有一个失败的设备,并且我已经将一个 NSLog 放入应该调用的方法中。它运行良好,但在故障设备上,当performSelectorOnMainThread:withObject:waitUntilDone:用于调用该方法时,NSLog 显示它没有运行......

这从 iOS 5 测试版开始发生,并在发布时再次发生。它最常发生在我的 2 台设备上,但在我亲自测试过的其他 10 台设备上都没有。我认为这只是我的设备在测试版中的一些小问题,但它发生在我从未接触过测试版的全新 4S 以及一位用户的 iPad 2 上(不是在我的 iPad 2 上)。

我真的不知道在哪里看。我告诉它执行,它通常在几乎所有设备上执行,但同一行在某些设备上没有响应,也没有错误等。