如何从 C 方法调用 Objective-C 方法?

2023-11-29

我有一个 Obj-C 对象,里面有很多方法。有时一个方法需要调用同一对象内的另一个方法。我似乎不知道如何让 C 方法调用 Obj-C 方法......

WORKS:Obj-C 方法调用 Obj-C 方法:

[self objCMethod];

WORKS:Obj-C 方法调用 C 方法:

cMethod();

不起作用:C 方法调用 Obj-C 方法:

[self objCMethod];     // <--- this does not work

最后一个示例导致编译器吐出此错误:

错误:“self”未声明(在此函数中首次使用)

两个问题。为什么 C 函数看不到“self”变量,即使它位于“self”对象内部,以及如何调用它而不导致错误?非常感谢您的帮助! :)


为了使其工作,您应该像这样定义 C 方法:

void cMethod(id param);

当你调用它时,这样调用它:

cMethod(self);

那么,你就可以写:

[param objcMethod];

In your cMethod.

这是因为self变量是自动传递给 Objective-C 方法的特殊参数。由于C方法不享受这个特权,如果你想使用self你必须自己发送。

查看更多内容编程指南的方法实现部分.

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

如何从 C 方法调用 Objective-C 方法? 的相关文章

  • 如何在操作表中添加日期选择器?

    IBAction showCatPicker if self catList nil self catList nil catList release self catList NSMutableArray alloc init self
  • 目标操作 uicontrol 事件

    我一定在这里遗漏了一些明显的东西 但是 UIControl有一个方法 void addTarget id target action SEL action forControlEvents UIControlEvents controlEv
  • 在 Objective-C iPad 开发中发布

    我正在尝试发出 POST 请求 但我似乎无法弄清楚出了什么问题 我从服务器收到响应 但我的电子邮件 密码对似乎没有正确发送 读取 由服务器 它告诉我不存在这样的帐户 这是我的代码 它包含在一个函数中 当用户按下我创建的 登录 按钮时调用该函
  • iOS 上读取证书问题

    我正在尝试从 iOS 中的各种 URL 读取证书 然而 我的代码运行不佳 应该返回我需要的信息的数组总是返回null 我缺少什么 void findCertificate NSString url NSInputStream input N
  • 动态框架中未定义的架构符号

    我正在开发一个 iOS 框架 该框架包含多个第三方框架并使用 UnitySendMessage C 方法与 Unity 进行通信 我想创建一个动态框架 支持 iOS8 但我偶然发现以下编译错误 Undefined symbols for a
  • 动画导航控制器“后退”按钮

    我在导航控制器层次结构中的视图控制器上有一个自定义按钮 按下该按钮时 会弹出可见的视图控制器 我想使用 UIView 的transform属性来动画关闭视图控制器 它有效 但如果我使用 popViewControllerAnimated Y
  • iOS7 无法隐藏状态栏

    我刚刚将我的 iPhone 5 iOS 7 升级到了四个测试版 现在 当我在这台 iPhone 上通过 Xcode 5 运行我的应用程序时 状态栏不会隐藏 尽管它应该隐藏 不工作 UIApplication sharedApplicatio
  • 锁定时 AVAudioPlayer 在 iPhone 5 中不播放音频

    使用 AVAudioPlayer 我尝试在 iphone 播放器播放时播放声音 当设备锁定时也是如此 问题是 在 iPhone 4s ios 7 中 效果很好 但在带有 6 和 7 ios 的 iPhone 5 上没有任何反应 In the
  • 多次显示admob插页式广告怎么办?

    我有一个小型游戏应用程序 它有一个故事板 里面创建了像开始菜单 游戏区域 分数这样的场景 我在其中添加了 admob 横幅视图和插页式广告 我的横幅视图工作正常 但我的插页式广告只能工作一次 我在 viewdidload 上加载插页式广告
  • 在当前参数寄存器中找到的选择器名称:isEqual:

    我正在寻求一些帮助来消除 OSX 应用程序中的一个我无法解决的错误 我收到以下记录错误 Selector name found in current argument registers isEqual 但我一生都无法弄清楚它来自哪里 因为
  • 为什么 Objective-C 使用 YES 和 NO 而不是 1 和 0? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 Objective C 使用 YES 和 NO 而不是 1 和 0 是否有任何技术原因 或者只是为了使其更具可读性 使其更具可读性is技术原因
  • 如何在ios上定义可达性超时

    我使用 Reachability 类来了解我是否有可用的互联网连接 问题是当wifi可用但不能上网时 NetworkStatus currentReachabilityStatus方法花费太多时间 my code Reachability
  • 从 iOS 中的 App Delegate 调用当前视图控制器中的方法

    我有两个视图控制器 BuildingsViewController 和 RoomsViewController 它们都使用应用程序委托中名为上传的函数 上传函数基本上执行一个 HTTP 请求 如果成功或不成功 都会触发 uialertvie
  • 如何为 Mac OS X 制作可拖动的菜单栏图标

    我正在为我正在开发的应用程序编写菜单栏图标 但是 NSStatusBar 类没有可以通过 cmd 鼠标左键拖动来使图标可拖动的方法 如何使用 Objective C 代码使菜单栏图标可拖动 谢谢 目前您无法使用 NSStatusBar 来完
  • 在 Objective-C 中,逗号用作语句分隔符时有什么作用?

    我正在查看第三方的一些源代码 并且反复看到对我来说新的语法 基本上他们用逗号而不是分号分隔语句 它可以编译并运行 但我不明白它在做什么 看起来是这样 if url url release url nil 有时他们也会在不使用 if 的情况下
  • 使用UDID创建唯一的用户身份

    我正在开发一个 iPhone 应用程序 它与服务器通信以存储和交换数据 因为我想让它尽可能简单 所以我想避免用户帐户的注册 或者也可能使用密码 是否有可能 并且允许 获取 iPhone 设备的 UDID 并制作例如 它的 MD5 哈希值 我
  • 我应该在我的 iOS Objective-C 项目中使用它吗?

    Xcode 中的 构建设置 中的 Mach O 类型是什么 应该设置什么 它有这些选项 可执行文件 动态库 捆绑包 静态库 可重定位对象文件 自从我将其从可执行文件更改为静态库以来 我遇到了错误 Apple Mach O 链接器错误组 我的
  • 检查 UITableViewCell 是否完全可见

    如何检查 UITableViewCell 在屏幕上是否完全可见 不被选项卡或导航栏切断 我可以使用以下代码获取可见单元格 NSArray indexes tableView indexPathsForVisibleRows 但我想排除屏幕中
  • 从 iPhone 设备查找当前国家/地区

    我必须在 iPhone 设置中获取当前国家 地区 谁能告诉我如何在 iPhone 应用程序中获取当前国家 地区 我必须使用当前国家 地区来解析需要传递当前国家 地区的 RSS 提要 请帮我找到那个国家 提前致谢 要查找用户选择的语言所在的国
  • 使用 Python-AppKit-Objective C 转换为预组合 Unicode 字符串

    苹果公司的这份文件技术问答 QA1235 http developer apple com qa qa2001 qa1235 html描述了一种将 unicode 字符串从组合版本转换为分解版本的方法 由于我对包含某些字符 例如重音符号 的

随机推荐

  • UITableViewCell 无法用一根手指点击来点击,但可以用两根手指点击

    我创建了一个表视图 并且 tableViewCell 无法用一根手指单击 但是当我尝试用两根手指单击 tableViewCell 时 会发生单击事件 我不知道为什么会出现这种情况 我在 tableView 中创建了一个自定义单元格 Invi
  • 将公式转换为 CNF

    有没有办法使用 z3 将公式转换为 CNF 使用 Tseitsin 式编码 我正在寻找类似的东西simplify命令 但保证返回的公式为 CNF 您可以使用apply命令来执行此操作 我们可以为该命令提供任意战术 策略 有关 Z3 4 0
  • Crystal Reports 打印纵向而不是横向

    我在 SAP Crystal Reports 14 1 4 1327 中创建了一个非常简单的测试报告 rpt 文件 我在页面设置中将页面方向设置为横向 如果我从 Crystal Reports Designer 打印文档 它将以横向方式正确
  • 如何在Form1、WinForms C#中使用Form2的变量?

    我在 Visual Studio 2013 中有一个解决方案 其中包含两个表单 我想要当在 Form2 中按下按钮时 变量flag fb已更新 我在 Form1 中使用它的值 有什么办法可以做到这一点吗 谢谢 方法一 使用参数化构造函数在表
  • Android:PatternSyntaxException:语法错误 U_ILLEGAL_ARGUMENT_ERROR

    我在用着json io将一些 JSON 数据转换为 Java 对象 DataTransferContainer dataTransferContainer DataTransferContainer JsonReader jsonToJav
  • 使用 gnuplot 绘制两个相邻的“带框”图

    我试图将两个数据系列绘制在一张图中 作为 gnuplot 中的方框 该脚本目前如下所示 set terminal postscript eps enhanced color set title Distribution of the ext
  • C++:调用派生类的虚函数

    假设我有一个带有虚函数的类和一个以不同方式实现该虚函数的派生类 假设我还有一个用于存储派生类的基类向量 如果事先不知道派生类是什么 我将如何在向量中执行派生类的虚函数 说明问题的最少代码 include
  • 如何在任意 Java 应用程序中启用抗锯齿功能?

    尽管 Swing 能够提供抗锯齿字体 但许多 Java 应用程序默认情况下并不使用抗锯齿字体 如何强制任意 Java 应用程序使用 AA 字体 适用于我正在运行的应用程序和我正在开发的应用程序 如果您有权访问源代码 则可以在 main 方法
  • 创建色轮的功能[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 这是我多次伪解决但从未完全找到解决方案的问题 问题是想出一种方法来生成N颜色 尽可能区分N是一个参数 我对此的第一个想法是 如何在空间中生成 N 个向量 使彼此之间的距离最大化
  • 单元格悬停时的工具提示图像,Google 电子表格

    我目前正在制作一个必须包含大量图像引用的 Google 电子表格 我想要实现的是 当您将鼠标悬停在单元格上时 会出现图像 如工具提示 I found 这个小部件在 Google Developers 上 但是当我将代码添加到电子表格时什么也
  • IE9 下的 FakeSmile

    我正在尝试在 IE9 中伪造 SMIL 支持假笑 我动态创建 SVG 元素 添加带有 animate 元素的 rect 元素并调用 beginElement IE9 给我一个错误 对象不支持属性或方法 beginElement 静态 SVG
  • 在数据库中存储标签的最有效方法是什么?

    我正在我的网站上实现一个类似于 stackoverflow 使用的标签系统 我的问题是 存储标签以便搜索和过滤标签的最有效方法是什么 我的想法是这样的 Table Items Columns Item ID Title Content Ta
  • 无法在运行时修改mapred.job.name。它不在允许在运行时修改的参数列表中

    我正在尝试在气流中运行一些蜂巢作业 我建立了custome jdbc 连接 您可以在图中看到 我可以通过 Airflow Web ui 查询 Hive 表 数据分析 gt 即席查询 我还想运行一些来自互联网的示例 dag 文件 File N
  • “is”运算符未按预期工作

    看看这段代码 import re ti abcd tq abcdef check abcd re compile abcd print id check abcd search ti print id check abcd search t
  • 检查 Javascript 函数接受多少个参数?

    With arguments length我可以看到有多少参数传递给函数 但是有没有办法确定一个函数可以接受多少个参数 以便我知道应该传入多少个参数 Function length会完成这项工作 在我看来真的很奇怪 function tes
  • tkinter.TclError:图像“pyimage3”不存在

    我在使用一个在屏幕上显示图像两秒钟然后被破坏的函数时遇到问题 当程序运行时 函数初始调用程序正常工作 但如果随后通过 tkinter 中内置的按钮调用该函数 则会出现错误 appcwd os getcwd user32 ctypes win
  • mvc 大写模型 vs 小写模型

    我正在开发一个 MVC 5 项目 对 MVC 来说非常陌生 我注意到代码中的这一行 Html DropDownListFor model gt model ContractorId Model Contractors 页面顶部的指令是 mo
  • 我可以更改之前所有提交中的姓名吗?

    我想在我的所有提交中更改我的名字 姓氏和电子邮件 可以吗 Use git filter branch git filter branch commit filter if GIT AUTHOR NAME Josh Lee then expo
  • 从高于最低要求的 API 级别调用 API

    我编写的应用程序的大部分内容都很好 最低 API 级别设置为 7 我想从级别 8 调用单个 API 使用较低版本 Android 的用户将在没有此 额外功能 的情况下生存 目前我添加了 SuppressLint NewApi 这样我的代码就
  • 如何从 C 方法调用 Objective-C 方法?

    我有一个 Obj C 对象 里面有很多方法 有时一个方法需要调用同一对象内的另一个方法 我似乎不知道如何让 C 方法调用 Obj C 方法 WORKS Obj C 方法调用 Obj C 方法 self objCMethod WORKS Ob