问题标签 [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 投票
2 回答
2026 浏览

iphone - 后台任务完成后如何指示主 UI 线程?(执行SelectorInBackground)

当后台任务完成时,如何在 iPhone 应用程序 IOS 程序中获得主 UI 线程的指示?

背景

  • 我正在尝试按照How to add a UIActivityIndi​​cator to a splash screen in a iphone application? 中的概念设置加载指示器?
  • 打算在 AppDelete 中使用“performSelectorInBackground”加载模型数据
  • 因此,我需要在 RootViewController 中以某种方式告诉数据何时在后台完成加载,以便它可以(a)使用数据更新 tableview 并(b)删除任何活动指示器
  • 我假设在这里做事的方法如下:
    • 在 App Delegate didFinishLaunchingWithOptions 传递模型数据加载到后台
    • AppDelegate 加载 RootViewController 并立即设置一个活动指示器
    • 一旦数据在后台加载,它必须以某种方式向 RootViewController(?这个问题的原因)表明它已经完成
    • 第二个问题可能也是当后台任务确实表明其完成时,RootviewController 如何在尝试禁用活动指示器之前检查 UI 是否已设置(带有活动指示器等)
0 投票
3 回答
2789 浏览

objective-c - 运行 performSelector: 在返回双精度而不是 id 的对象上

如何在对象上运行任意选择器,其返回是双精度值?例如,我有 obj A,它有方法 -(double)b​​lah;

我该怎么办double res = [obj performSelector:@selector(blah)];?performSelector 返回一个id类型对象,所以我应该从 id 转换为 NSInteger 到 double - 这会失去精度吗?

另外,我不想使用 obj methodSignatureForSelector(意思是 noNSMethodSignature和 no NSInvocation),因为它在运行时会消耗大量 CPU。

0 投票
2 回答
13160 浏览

iphone - scheduleTimerWithTimeInterval 与 iOS 5.0 延迟的 performselector

我正在使用 scheduleTimerWithTimeInterval 进行函数调用。我只是在检查特定 Web 服务的 xml 解析是否完成,并在成功响应后使 didEndElement 方法中的计时器无效。

现在我遇到了 iOS 5.0 的问题,它在其他 iOS 版本中运行良好。在 iOS 5.0 中,函数 stopWS 随时调用,即使我将其无效。让我知道您是否有解决方案。

现在我正在实现带有延迟的 performselector 并在 stopWS 中设置布尔变量来识别解析是否完成。我只是想知道这之间有什么主要区别吗?这个解决方案是否适用于我的问题?

如果有其他方法,请建议我,谢谢。

0 投票
1 回答
104 浏览

iphone - findTheAppropriateSelectorForTheCurrentSituation() 及其内容是什么?

参考讨论performSelector其中解释了以下行可以调用方法

SEL aSelector = findTheAppropriateSelectorForTheCurrentSituation();
[anObject performSelector: aSelector];

我的问题是调用的方法的内容是什么:
findTheAppropriateSelectorForTheCurrentSituation()?//对我来说最重要的问题

还有一个问题是,为什么我在使用这段代码时会收到警告。

1.warning:函数'findTheAppropriateSelectorForTheCurrentSituation'的隐式声明
2.warning:初始化使指针从整数而不进行
强制转换 3.“_findTheAppropriateSelectorForTheCurrentSituation”,引用自:

提前感谢您的回答

0 投票
1 回答
627 浏览

iphone - 带有 performSelector afterDelay 的 CAAnimation

我在搞乱一个基本的 CAAnimation 示例,我只是想让 CALayer 在 UIView 的子类中旋转。我首先制作一个带有红色背景的新 CALayer 并将其插入 self.layer。然后,我制作了一个应该在不透明度更改时触发的 CAAnimation,并将其应用于 CALayer,之后它按预期旋转。

奇怪的是,如果我尝试使用 performSelector:withObject:afterDelay: 应用完全相同的动画,则 CALayer 不再动画,尽管它的不透明度仍然会发生变化。更奇怪的是,如果我使用 performSelector:withObject:afterDelay: 使用几乎相同的代码为 self.layer 设置动画,它就可以工作。

关于发生了什么的任何想法?这是我的代码:

这是我的界面

注意:我正在使用等于[UIScreen mainScreen].applicationFrame来自应用程序委托的框架实例化此视图。

0 投票
2 回答
2056 浏览

iphone - iPhone performSelectorInBackground

我有这个问题:这是我的 appDelegate 文件的一部分,我在其中创建了一个“performSelectorInBackground”方法。

首先我添加一些启动画面,我得到一个位置和调用背景方法。这是后台方法的内容:

我下载了一些数据,检查数据版本,为应用程序设置字符串以及调用主线程方法来创建标签栏控制器代码:

在这里,我创建了一个标签栏控制器并删除了启动画面。然后启动我的 firstViewController。

问题是在我的 firstViewController 中显示了当前位置,但这是错误的。有时是正确的,但很多时候是错误的。哪里有问题?是否有任何选项如何检查后台线程是否结束?或者解决我的问题的其他方法(我只需要:显示带有活动指示器和一些消息的启动画面(这些消息在方法中发生了更改,例如 init、获取位置等),然后我需要获取位置、删除启动画面并显示 firstViewController)。 .. 多谢

编辑:这是位置代码:

0 投票
3 回答
26714 浏览

objective-c - iOS performSelectorOnMainThread 有多个参数

我想从另一个线程在主线程上执行选择器,但选择器有多个参数,类似于:

-(void) doSomethingWith:(int) a b:(float)b c:(float)c d:(float)d e:(float)e { //... }

我怎样才能得到这个工作performSelectorOnMainThread: withObject: waitUntilDone:

编辑

我想解释一下为什么我需要这个。

我在主线程上使用 UIImageViews,并在另一个线程上为它们进行计算。我使用了很多计算,所以如果我在主线程上做所有事情,应用程序就会滞后。我知道 UI 元素只能在主线程上操作,这就是我希望它以这种方式工作的原因,因此主线程可以毫无延迟地监听触摸事件。

0 投票
10 回答
97151 浏览

iphone - iOS - 如何实现具有多个参数和 afterDelay 的 performSelector?

我是一个iOS新手。我有一个选择器方法如下 -

我正在尝试实现这样的东西 -

但这给了我一个错误说-

关于我缺少什么的任何想法?

0 投票
1 回答
2141 浏览

objective-c - Objective-c performSelector: vs performSelector:withObject

打电话和打电话[myObject performSelector:@selector(something) withObject:nil];一样[myObject performSelector:@selector(something)];吗?

0 投票
1 回答
2050 浏览

ios - performSelector:withObject:afterDelay: 在 NSOperation 中

我正在一些NSOperationNSOperationQueue. 该代码还包含一个延迟的方法调用,使用performSelector:withObject:afterDelay:.

问题是,应该被称为延迟的相应选择器根本没有被调用

阅读了 StackOverflow question 的这个答案后,我想这是由于NSOperation已经完成并且它的线程甚至不再存在,“忘记”了对选择器的预定调用。

我该如何解决这个问题? 如何对 中的方法进行延迟调用NSOperation