UIApplication.SharedApplication.TerminateWithSuccess不存在

问题描述:

为什么MonoTouch中未实现SharedApplication的TerminateWithSuccess方法?我怎样才能调用它?或甚至更好,我怎样才能以编程方式关闭应用程序?UIApplication.SharedApplication.TerminateWithSuccess不存在

terminateWithSuccess是私有API,这就是为什么MonoTouch无法显示它。您仍然可以使用选择器来调用它。

 Selector s = new Selector("terminateWithSuccess"); 
     UIApplication.SharedApplication.PerformSelector(s, UIApplication.SharedApplication, 0) 
+1

请记住,调用此方法不是“犹太教”,苹果公司可以改变它没有任何警告,它甚至可能会阻止你的应用程序获得批准。 – 2009-12-30 06:44:23

+0

我在论坛上阅读了这些内容,很多人获得了使用该方法的应用程序批准。什么是关闭应用程序的犹太方式? – 2009-12-30 06:49:18

+0

这个方法很安全,我不用担心太多使用它。但是官方,你根本不应该关闭应用程序。用户应该通过点击手机上的物理按钮来关闭应用程序。 'terminateWithSuccess'不会动画关闭,应用程序会消失,这可能会让用户认为您的应用程序崩溃。 – 2009-12-30 06:54:35

在发布问题后,我想出了它,但马特击败了我。这是另一种方式:

UIApplication.SharedApplication.PerformSelector(new Selector(“terminateWithSuccess”),null,0f);

+0

不要忘记阅读Matt对他的答案的评论,以获取关于此方法的重要信息。 – 2009-12-30 06:51:03

+0

是的,我猜NSObject参数对我来说有点朦胧。大多数人只是通过空。 – 2009-12-30 18:46:09

+0

我只是重新读我的方式和你的方式,除了第二个参数完全一样。我想我太累了,并认为它是完全不同的。无论哪种方式工作。 – 2009-12-31 14:52:55

FWIW-我收到这最后week-貌似时间到了这种方法...

谢谢您提交更新XXXX到App Store。在我们审查您的应用程序时,我们发现它使用的是私有API,这违反了iPhone开发者计划许可协议第3.3.1节; “3.3.1应用程序只能按照Apple规定的方式使用文档化的API,不得使用或调用任何私有API。”尽管您的应用程序尚未被拒绝,但在您的下一次更新中解决此问题是适当的。
以下非公开的API都包含在你的应用程序:
terminateWithSuccess
如果你已经在你的源代码中定义的方法具有相同的名称作为上述的API,我们建议改变你的方法名,使他们不更长时间与Apple的私有API相冲突,以避免将您的应用程序标记为将来提交的内容。 请在您对xxx的下一次更新中解决此问题。