如何调用使用 NSClassFromString 动态创建的类中的方法?

2024-02-03

我进行动态类加载的原因是因为我正在创建一组可在多个类似项目中使用的文件,因此执行 #import 然后正常实例化是行不通的。动态类允许我执行此操作,只要我可以调用这些类中的方法即可。每个项目在 pch 中都有一个不同的“kMediaClassName”名称,这样我就可以根据我所在的项目动态加载不同的类:

#define kMediaClassName @"Movie"

这是我用来动态获取类实例的代码:

Class mediaClass = NSClassFromString(kMediaClassName);
id mediaObject = [[[mediaClass alloc] init] autorelease];

然后我尝试调用该动态类中的方法:

[mediaObject doSomething];

当我将其输入 Xcode 时,编译器会显示一条警告,表明该类没有此方法,尽管它有。我可以在我的 Movie.h 文件中看到它。到底是怎么回事?如何从动态实例化的类中调用方法?

如果我需要传递多个参数怎么办?

[mediaObject loadMedia:oneObject moveThe:YES moveA:NO];

我在这里先向您的帮助表示感谢。


你可以声明一个协议,如下所示:

@protocol MONMediaProtocol

/*
  remember: when synthesizing the class, you may want
  to add the protocol to the synthesized class for your sanity
*/

- (BOOL)downloadMediaAtURL:(NSURL *)url toPath:(NSString *)path loadIfSuccessful:(BOOL)loadIfSuccessful;

/* ...the interface continues... */

@end

in use:

Class mediaClass = NSClassFromString(kMediaClassName);
assert(mediaClass);

id<MONMediaProtocol> mediaObject = [[[mediaClass alloc] init] autorelease];
assert(mediaObject);

NSURL * url = /* expr */;
NSString * path = /* expr */;

BOOL loadIfSuccessful = YES;

BOOL success = [mediaObject downloadMediaAtURL:url toPath:path loadIfSuccessful:loadIfSuccessful];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何调用使用 NSClassFromString 动态创建的类中的方法? 的相关文章

  • 如何在 UILabel 上创建强烈的红光效果

    我需要在 UILabel 或 CATextLayer 上实现外发光效果 如上所述 我知道要在文本上创建发光效果 我需要偏移量为 0 0 的阴影 我已经接触到quartz2D级别 以下是我正在使用的代码 backgroundDownLabel
  • 将 UIDatePicker 装入 UIActionSheet 中

    我正在尝试让带有 UIButton 的 UIDatePicker 显示在 UIActionSheet 中 不幸的是 它被剪掉了 整个日期选择器都不可见 我什至还没有尝试添加 UIButton 谁能建议让整个视图正确配合 我不确定如何添加正确
  • xcode 5.1 中的 ios 6.0 模拟器

    我刚刚成功将 Xcode 工具更新到 5 1 版本 当我检查首选项部分中的 下载 选项时 我注意到没有下载 ios 6 0 模拟器的选项 请检查附图 那么如何在Xcode 5 1中访问ios 6 0模拟器呢 请按照此程序升级您的 xCode
  • UIScrollView setContentOffset:动画:不起作用

    我有两个无限的 UIScrollViews 的问题 它们没有正确改变它们的偏移量 第一个 UIScrollView 中的项目与第二个 UIScrollView 中的另一个项目相对应 然后 我想将单击的项目放在第二位 并为两个 UIScrol
  • 运行 pod install 时出错 - 在目标“Runner”上自动分配版本“8.0”的平台“iOS”

    你好 我无法用 Cocoapods 解决这个问题 任何人都可以帮助我 这是我第一次使用这个导入 导入 包 flutter vlc player flutter vlc player Dart 而不是可能出什么问题 我在mac上使用andro
  • 如何使用苹果钥匙串?

    我正在尝试使用scifihifi iphone 来自 Github http github com ldandersen scifihifi iphone tree master security存储和检索用户名和密码 但是 当我添加课程时
  • 在 Swift 3 中以编程方式创建没有 XIB 的 NSViewController

    我正在尝试在不使用 Interface Builder 的情况下制作 macOS 应用程序 我的项目已构建并运行 但我的主视图控制器似乎没有加载其视图 那就是viewDidLoad 方法未被调用 我正在使用 Xcode beta 8 0 b
  • 如何将 AFNetworking 2 与摘要式身份验证结合使用

    我一直在搜索 AFNetworking 2 with Digest Authentication 一段时间 但没有找到关于它的有用讨论 除了this one https github com AFNetworking AFNetworkin
  • 如何将 Swift 字符串传递给 C 函数?

    我在将字符串从 swift 传递到用 c 编写的函数时遇到严重问题 我正在尝试在我的快速代码中执行此操作 var address 192 168 1 2 var port 8888 initSocket address port c 函数如
  • Swift 从 Realm 中删除对象

    我有领域对象保存来自 JSON 响应的列表 但现在如果该对象不再从 JSON 中出现在列表中 我需要删除该对象 我怎么做到这一点 这是我的领域初始化 func listItems dic Array lt String AnyObject
  • Xcode 11 beta swift ui 预览未显示

    只是使用 Swift UI 基本应用程序 即使我处于画布模式 预览画布也不会显示 应用程序运行 我有这个小片段 我错过了什么 if DEBUG struct ContentView Previews PreviewProvider stat
  • UITouch移动速度检测

    我正在尝试检测触摸移动的速度 但并不总能得到我期望的结果 补充 速度峰值太多 任何人都可以发现我是否在做一些时髦的事情或建议更好的方法吗 void touchesBegan NSSet touches withEvent UIEvent e
  • iOS 5 中的新错误:WebKit 丢弃了未捕获的异常

    我正在尝试加载一个UIWebView与 Facebook OAuth 授权 URL 我使用以下代码 当我的UIWebView加载 Facebook 登录页面 我输入我的凭据 然后按 登录 按钮 当我点击按钮时 我收到以下错误 WebKit
  • 如何清理 Xcode 5 中的构建文件夹?

    Xcode 5 中 清理构建文件夹 的快捷方式似乎消失了 Command Option Shift K 不再起作用 有人找到新的快捷方式了吗 从 Xcode 7 开始 此功能又回来了 按Command Option Shift K 或者从菜
  • Xcode 4.2 中“未找到有效签名身份”

    我知道还有其他问题与此非常相似 但他们的症状与我的不太一样 我有一个应用程序 我一直在尝试提交到应用程序商店 我正在运行 Xcode 3 2 6 并且不断收到来自 iTunes Connect 的无效二进制错误 我最终找到了一个指向升级 X
  • EKEvent接受邀请

    你如何接受EKEventiOS 中的邀请 我知道这有可能梦幻般的 日历 5和其他日历应用程序具有此功能 但我没有看到公开的非只读属性来更改用户有关事件的状态 知道如何做到这一点吗 Thanks 事实证明 经过更多研究后 所有这些应用程序都只
  • 验证 iOS 应用程序时出现 com.apple.developer.linked-domains 问题

    当我在 Xcode 中使用 Organizer 验证我的项目时 出现以下错误 无效的代码签名权利 你的申请包的签名包含代码签名权利iOS 上不支持的 具体来说 值 for key com apple developer associated
  • 在哪里可以了解有关 WebCoreSharedBufferData 的更多信息?

    我有一个在 iOS 6 上完美运行的应用程序 但在 iOS 7 上 如果用户采取了非常具体的操作 太复杂而无法进入 但它使用UIWebView并且它是一致的 应用程序崩溃并出现错误 Terminating app due to uncaug
  • 将子视图控制器添加到当前视图控制器

    我正在尝试使用以下代码在代码中将子视图控制器添加到情节提要中的当前视图控制器 UIStoryboard storyboard UIStoryboard storyboardWithName Main bundle nil LogInTuto
  • NSCF 数组越界?

    我有一个相当简单的应用程序 使用 Core Data 和几个数组控制器 在 IB 中 除了 xcdatamodel 文件之外 没有它们的代码文件 当我运行应用程序时 我在日志中收到以下错误 应用程序仍然运行 但在转到 文件 gt 新文档 之

随机推荐

  • MySQL 日期时间和时间戳字段是否比 Unix 时间戳整数更适合 PHP 应用程序?

    我正在阅读一篇文章 其中显示了一些非常好的信息和基准 关于三种不同的 MySQL 日期 时间存储选项的执行情况 MySQL DATETIME TIMESTAMP INT 性能以及使用 MyISAM 进行基准测试 http gpshumano
  • 是否有可能有一个利用 firebase 的 chrome 打包应用程序?

    我遇到了 CSP 问题 我尝试将 firebase 添加到权限和沙箱中 我正在尝试转换此 firebase 示例 chrome 扩展 https github com firebase firebase chrome extension h
  • 通过 css 的文本装饰线在 Safari 上无法使用我的“已完成”类工作

    我一直在多个设备上测试我的应用程序 刚刚发现我的 CSS 样式之一无法在 Safari 上运行 特别是我的 iPhone 和 iPad 我正在使用 Angular 制作一个待办事项应用程序 并且希望在项目标记为完成时用红线划掉文本 如果我创
  • 从最高到最低排名时处理平局

    我正在尝试为一个小项目制作一个排名管理器 总计存储在数据库中 我可以使用mysql轻松获取最大值和最小值 并按降序排列记录 当出现平局时就会出现问题 我需要以以下形式显示平局 1 2 3 3 4 5 6 7 7 7 7等 重复的数字将显示平
  • 如果密码正确,带有会话的 Codeigniter 登录系统会将用户重定向到页面

    我创建了一个登录系统 但每次设置 if 语句时 当我输入正确的密码时 它都会循环回到登录页面 我需要控制器中的索引函数 list employee 函数和 View employee 函数来将用户重定向到登录页面 如果他们直接访问 但如果他
  • 如何在 Ruby 中继承抽象单元测试?

    我有两个单元测试 它们应该共享许多常见的测试 但设置方法略有不同 如果我写类似的东西 class Abstract lt Test Unit TestCase def setup field create end def test 1 en
  • 禁用 Android 中的后退按钮

    如何在注销应用程序时禁用 Android 中的后退按钮 如果您打算处理设备上的后退按钮 请重写 onBackPressed 方法并且不执行任何操作 Override public void onBackPressed if shouldAl
  • 仅适用于希伯来语字符的 ng-pattern

    我想用ng pattern验证我的文本输入字段应该只接受希伯来语字符 有时输入没问题 有时由于某种原因被拒绝 第一个字母是验证 第二个字母不是 等等 例子
  • 如何将 ECDSA 密钥转换为 PEM 格式

    我有一个私人原始密钥米以太钱包 with a 密码短语 testwallet 现在我尝试按照此答案使用 OpenSSL 将其转换为 PEM 格式 echo a140bd507a57360e2fa503298c035854f0dcb248be
  • 更改 jupyter 笔记本标签小部件中的字体属性

    我正在尝试修改 python 2 7 中 jupyter 标签小部件的字体属性 粗细 颜色等 作为一个例子 我尝试过以下方法 import ipywidgets as widgets myLabel widgets Label value
  • 调整放置在 byte[] 数组中的图像大小

    放置在 byte 数组中的图像大小 不知道图像的类型 我必须生成另一个 byte 数组 其大小应达到 50kB 我怎样才能进行某种缩放 除非您想进行一些严肃的数学运算 否则您需要将字节数组加载到内存流中 从该内存流加载图像 并使用 Syst
  • Excel公式:如何按大写字母拆分字符串

    使用公式而不是VBA 我想提出一个解决方案来分割由多个单词组成的字符串 该公式应该识别有大写字母的单词并将它们分开 结果将是一个字符串 其中单词之间用 分隔 为了澄清这一点 我们举一个字符串的例子 Nursing StudentStuden
  • 如何限制画布中的拖放区域

    我有一个画布 假设尺寸为 500x600 我在该画布内有一些控件 用户可以通过拖放重新排列控件 但我想限制该画布内的拖放 例如 画布中有一个按钮 用户可以将该按钮拖放到画布内的任何位置 但是 如果用户尝试将按钮拖出画布边界 则它应该停留在画
  • 仅最后一个值在数组中重复

    我正在尝试在 javascript 中用逗号分隔附加一些值 我有这个查询 select boxes dispatch id projects project boxes hardware sum boxnumber as boxnumber
  • JAX-RS 是构建在 Servlet API 之上的吗?如何?

    我一直在读到 JAX RS 是构建在 servlet 之上的 这是字面意思吗 还是仅仅意味着它是一个更高级别的组件 如果是的话 它是如何运作的 JAX RS 是否创建一个解析请求并手动初始化的 servlet Path带注释的类并将修改后的
  • 从包中导出所有隐藏函数

    有没有一种方法可以自动从包中导入所有隐藏函数 即只能通过以下方式访问的函数package fun 事实上 我对给定函数进行了一些修改 该函数使用了相当多的内部函数 我想避免重新输入package 到处 我在看loadNamespace基本函
  • 使用 LibGDX 的法线贴图 GLSL

    我尝试使用 LibGDX 实现法线贴图 因此 当我在顶点着色器中计算漫反射和镜面反射颜色时 我得到了一些积极的结果 至少我这么认为 顶点着色器 attribute vec4 a position attribute vec2 a texCo
  • CONNECTIVITY_CHANGE 在 Android N 的目标中已弃用 [重复]

    这个问题在这里已经有答案了 我收到关于广播接收器已弃用声明的警告
  • 无法使用 PostgreSQL 配置 AspNet.Identity

    我有一个使用 SQL Server 设置的 Web 项目 现在必须将其迁移到 PostgreSQL 我使用实体框架版本 6 0 和最新版本的 Microsoft AspNet Identity 来管理用户凭据 我正在使用 VS2015 和
  • 如何调用使用 NSClassFromString 动态创建的类中的方法?

    我进行动态类加载的原因是因为我正在创建一组可在多个类似项目中使用的文件 因此执行 import 然后正常实例化是行不通的 动态类允许我执行此操作 只要我可以调用这些类中的方法即可 每个项目在 pch 中都有一个不同的 kMediaClass