【问题标题】:Objective C: is Posing available for ios?目标 C:摆姿势可用于 ios 吗?
【发布时间】:2015-06-11 18:11:07
【问题描述】:
  1. 我正在尝试为一个 ios 项目实施摆姿势。
  2. 场景: Defining class of controller at run time
  3. 我意识到poseAsClass 或class_poseAs 不适用于ios & 在 macOX 中也已弃用。
  4. 将感谢任何在 ios 中实施摆姿势的指导。谢谢

【问题讨论】:

  • 这个答案可能会对你有所帮助stackoverflow.com/questions/211616/…
  • 为什么?你到底想做什么?
  • 冒充另一个班级非常聪明。如果可能的话,你应该避免使用聪明的代码,否则任何维护你的代码的人都会永远讨厌你。它在 iOS 中不可用,并且出于某种原因在 MacOS X 中已弃用。
  • 嗨@Anbu,第一个点。 3 我意识到poseAsClass 或class_poseAs 不适用于ios 并且不推荐用于macOX。我关注了tutorialspoint.com/objective_c/objective_c_posing.htm,@ 987654324@,然后才来到第3点。谢谢

标签: ios objective-c


【解决方案1】:

如果您想篡改操作系统/私有 SDK 提供的类,整个姿势/调动方法非常有用 - 但您通常不应该这样做,并且将其用作您的标准方法也不是一个好主意自己的代码。

场景:在运行时定义控制器类

您通常会通过使用抽象超类/接口/@protocol 来定义潜在控制器需要实现的接口,然后在运行时切换它们。

在您的情况下,您似乎需要一个控制器来充当真正的控制器的proxy。从技术上讲,您也不需要@protocol,因为UITableViewController 实际上是您的抽象超类,但您的代理最好是UITableViewController 并拥有视图,而您的其他控制器最好是NSObject 子类和只需遵循UITableView DataSource/Delegate 协议即可。

【讨论】:

    【解决方案2】:

    您应该研究 Method Swizzling。它可以帮助您在运行时更改函数/函数体。

    有一个很棒的tutorial here.

    【讨论】:

    • 不,我想更改目标类,谢谢。
    • @Yogesh.Lolusare.Apple 摆姿势会使您的 customClass 获取函数而不是 UIViewController 类,对吗? swizzling 也会做类似的事情,除了函数。
    • @oh 我想我需要在方法调配上做更多的工作。感谢您的重要 cmets。一旦我完成这方面的实验,我会将其标记为已接受的答案。谢谢,如果可能的话,你也可以看看stackoverflow.com/questions/29424934/…
    • 我不知道为什么有人拒绝投票答案和问题。
    • @Yogesh.Lolusare.Apple 不用担心被否决。有时人们只是没有给予足够的重视。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    • 2021-08-28
    • 2020-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多