何时何地放置 @class 声明

2023-12-05

我正在开发一个包含多个自定义类的项目。我有一个CardModel(NSObject) 具有一些整数属性来保存数据,以及Deck(NSObject) 有一个数组可以容纳一堆CardModels然后一个CardView(UIView) 有一个CardModel作为我选择时创建的属性CardModel from a Deck。然后我有一堆UIViewControllers我在UINavigationController.

我的问题是何时何地使用@class编译器指令。

如果我子类化一个UIViewController通过创建一个新文件并对其进行子类化,我应该使用@class MyViewController在标题中MyViewController.h or .m它是否位于实际使用控制器的文件的标头中(例如当一个控制器要实例化另一种控制器类型并将其推入堆栈时)。或者我是否需要使用它?仅当我实际上向我的类添加了超出库存实现中的新属性时才需要它吗?看来我要放@class到处都是,只是确保我不会出错,但我从根本上不明白我什么时候需要它。

Thanks!


您可以在 .h 中使用它来通知它有关自定义类的信息,而无需包含自定义类的 .h。

例子: 两个自定义类别:汽车和车轮

Car.h
----------------
@interface Car : NSObject {
}
- (void)addWheel:(Wheel*)newWheel;
@end

Car.h 不知道“Wheel”类,因此它会抛出错误,因此您可以像这样导入 Wheel.h:

Car.h
----------------
#import "Wheel.h"

@interface Car : NSObject {
}
- (void)addWheel:(Wheel*)newWheel;
@end

但你也不需要这样做。 Car.h 不需要了解有关 Wheel 类的任何信息,它只需要知道它存在即可。所以你使用 @class 来表达“嘿,这个类存在。相信我的话。”

Car.h
----------------
@class Wheel;

@interface Car : NSObject {
}
- (void)addWheel:(Wheel*)newWheel;
@end

然后在 Car.m 内部,当您实际上需要了解 Wheel 类(属性、方法等)时,您应该在那里导入 Wheel.h。

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

何时何地放置 @class 声明 的相关文章

  • 删除 NSMutablearray 中的最后一个对象[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 为什么要删
  • 如何在 Monotouch 中对 UIImageView 进行运动模糊效果?

    在 MonoTouch 中进行实时运动模糊的方法是什么 当滚动惯性图片库时 我需要在 UIImageView 上应用运动模糊效果 以强度和方向作为参数 就像在 Photoshop 中一样 我在 CocoaTouch 或 CoreAnimat
  • UITextField 字体大小在开始或停止输入字符时发生变化

    我见过很多线程 但没有找到解决这个问题的任何具体解决方案 我使用 XIB 创建了 UITextfield 尚未以编程方式对该字段执行任何操作 一旦我开始打字 文本字段的字体就会改变 一旦我将焦点移出文本字段 并且随着键盘消失 字体大小就会减
  • 使用 Nib 实现国际化。这真的是个好主意吗?

    在苹果文档中 他们说笔尖只需将笔尖翻译成多种语言即可实现国际化 我现在正在考虑一个更糟糕但现实的场景 你已经制作了一个巨大的用户界面 然后你将其翻译成 25 种语言 所以你会得到 25 个不同的笔尖 您还会在样式和定义 UI 方面获得巨大的
  • macOS 应用程序中还需要 Swift 的嵌入式 dylib吗?

    Swift 5 发行说明说 对于运行 iOS 12 2 watchOS 5 2 和 tvOS 12 2 的设备 Swift 应用程序不再在构建变体中包含 Swift 标准库和 Swift SDK 覆盖的动态链接库 但在同一上下文中没有提及
  • 为什么单个 Vec4 乘法会大大减慢我的 ogl es 2 片段着色器的速度?

    我正在为 iOS 设备编写 2D OpenGL 游戏 现在 我正在研究 iPad 第一代 上的性能 该游戏有 ogl 1 1 和 2 0 的代码路径 我可以通过 define 使用 ogl 2 0 时 分析器告诉我 我的渲染器利用率 相当稳
  • 跟踪所有 ObjC 方法调用?

    有时 当查看别人的大型 Objective C 程序时 很难知道从哪里开始 在这种情况下 我认为记录对每个非 Apple 方法的每次调用会很有帮助 有没有办法做到这一点 基本上 在某个中心位置进行一项更改 并记录调用的每个方法 最好仅限于非
  • 使用 Objective-C 在 iPhone 应用程序中显示或隐藏 UIButton

    我在用UITextView编辑文本 我想用两个UIButtons编辑并保存 最初我想显示编辑UIButton 当用户单击编辑时我想显示保存UIButton 当内容成功保存后 我不想再显示保存按钮 我是一名 C 编码员 在 C 中我曾经这样做
  • iOS 4.2.1 丢失文件?

    这是我第一次使用最新的 xcode 3 2 5 和新的 iOS 4 2 1 当我在设备上运行应用程序时 我收到以下运行时错误 无法读取 Developer Platforms iPhoneOS platform DeviceSupport
  • 在 Mac OS X Yosemite 10.10.1 上包含搜索路径

    我只是为了更改包含搜索路径顺序 我相信 I d like to change the include search path Especially I need usr local include first 但它不会因为重复而改变 我怎样
  • 自动布局和ios5

    我正在使用故事板 我已经使用了自动布局 但它不适用于 ios5 并且会崩溃 所以我想删除它 但是 如何取消选中自动布局 但如果我取消选中自动布局 我如何为 iPhone 4 和 5 设置屏幕 Regards 您可以在 IB 中禁用自动布局
  • 如何使用 ZBar 读取器的 scanCrop 属性?

    我正在使用 iPhone 的 ZBar SDK 来扫描条形码 我希望阅读器仅扫描特定的矩形而不是整个视图 为此需要将阅读器的 scanCrop 属性设置为所需的矩形 我很难理解必须设置的矩形参数 有人可以告诉我如果在纵向视图上它的坐标是 我
  • 从 Core Data、iOS 获取最后插入的项目

    有没有办法获取核心数据数据库中最后插入的项目 这将返回最后插入的对象 setFetchLimit 1 和 setFetchOffset 所有条目数 1
  • MKMapView 中显示多个注释标注

    是否可以同时打开多个标注 代码 void mapViewDidFinishLoadingMap MKMapView theMapView for id
  • 如何添加授权以从新钥匙串对应用程序进行代码签名,而无需任何人工交互

    我正在尝试使用特定证书自动化构建 iPhone 应用程序的过程 因此 想象一下 如果不同的用户将他们的证书上传到系统中 并且可以立即用于代码签名 我想在没有任何交互的情况下做到这一点 我也不想用不同的用户证书弄乱系统或登录钥匙串 为此我有
  • Objective-c中的贝塞尔曲线算法

    比我聪明的人可以看一下这个吗 我正在尝试实现我发现的贝塞尔曲线算法here http webtweakers com swag GRAPHICS 0074 PAS html在 Objective c 中 输出是错误的 我想我正确地转换了代码
  • 如何在ios中以编程方式添加水平间距和垂直间距?

    我在 ios 8 中创建了一个应用程序 因为我有 4 个可垂直使用的标签 它应该在某些条件下更改位置 所以我已禁用自动布局并以编程方式设置约束 现在的问题是 我可以设置水平和垂直位置 宽度和高度的约束 但我找不到任何方法来添加标签之间的水平
  • 通过 iPhone 连接到 AT&T 无线网络的谷歌静态地图无法工作 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 最近 当我的 iPhone 连接到 AT T 无线网络时 我在检索静态地图时遇到了问题 但是 当我连接到本地 WiFi 时工作正常 上周日停止工作了几
  • 如何使导航栏透明并淡出,就像 iPhone 中的照片应用程序一样

    我是 iPhone 编程新手 有人可以帮我吗 我想在iPhone中开发一个类似照片应用程序的应用程序 如何使导航栏和工具栏透明并淡出 就像 iPhone 中的照片应用程序一样 感谢你 UINavigationBar继承自UIView 所以你
  • 应用未能及时恢复

    我在一个非常具体的场景中遇到 未能及时恢复 崩溃 我认为与看门狗相关 仅在从后台恢复时 并且仅在进入后台后在很短的时间内执行此操作 a最多几秒钟 这似乎是相关的崩溃日志 Incident Identifier E30F2238 5B15 4

随机推荐

  • Irvine 的 WriteString 的奇怪输出

    以下程序的重点是打印出字母 c 以及每种背景和前景色的组合 在库中 我使用的颜色定义为 0 15 并使用以下代码 mov eax FOREGROUND BACKGROUND 16 call SetTextColor 这是我的代码 INCLU
  • 如何在 R 中将一元数据转换为二元数据(国家年份转换为配对年份)?

    我有按国家 地区年份组织的数据 以及二元关系的 ID 我想按二年组织这个 我的数据的组织方式如下 dyadic id country codes year 1 1 200 1990 2 1 20 1990 3 1 200 1991 4 1
  • 网站如何检测机器人?

    我正在学习 python 目前正在抓取 reddit 不知何故 reddit 发现我是一个机器人 我的软件实际上是一个机器人 但他们怎么知道这一点 以及我们如何欺骗他们认为我们是普通用户 我找到了实用的解决方案 但我要求更深入的理论理解 互
  • YAML 合并级别

    我们有一个包含重复部分的 gitlab ci yaml 文件 test client before script node v yarn install cache untracked true key client paths node
  • 如何将引用(不可序列化)从一个活动传递到另一个活动?

    假设我有一个对象的引用 我应该如何将其从一个活动传递到另一个活动 我不想查询应用程序对象 单例 静态变量 这还有可能吗 您可以在另一个活动中声明一个静态变量 或者在应用程序类中声明一些全局变量 然后在任何活动中访问它 就像您想从OldAct
  • Spring 会话范围的 bean(控制器)和对服务的引用(在序列化方面)

    标准情况 你有一个控制器 Controller with Scope session 通常期望在会话中放置的类能够实现Serializable以便在服务器重新启动时可以物理存储它们 例如 如果控制器实现Serializable 这意味着它引
  • .NET 中的“计算机不是我的成员”错误

    这个错误非常烦人 我已经进行了各种搜索 并且已经能够解决这个问题 我是该应用程序的几位开发人员之一 也是唯一遇到此问题的开发人员 我之前已经通过将扩展添加到项目属性中的 我的扩展 面板 这会生成不同的错误 然后删除该新扩展来临时修复了该问题
  • 从日历中获取日期之前的 18 年

    我需要获得 18 年后的完整日期 dd mm yyyy 我用代码作为 日历计算 Calendar getInstance calc add 日历 YEAR 18 它检索年而不是月或日之前的 18 年 即使在任何月份的 1 号等极端情况下 我
  • 如何在列表视图的行之间留出空白?

    在我的应用程序中 我需要列表视图在列表行之间有空格 这样我就可以为每一行提供背景 并且它看起来像行块 我尽了最大努力但没有找到任何解决方案 您可以使用android divider and android dividerHeight自定义行
  • 使用仅包含 ISO 周的数据集将 ISO 周聚合为几个月

    我的数据位于数据框中 其结构如下 df2 lt data frame Year c 2007 Week c 1 12 Measurement c rnorm 12 mean 4 sd 1 不幸的是 我没有每次测量的完整日期 例如缺少天数 只
  • 如何防止 GWT 应用程序中的 DoubleSubmit?

    澄清一下什么是双重提交 当用户点击提交按钮两次时 服务器将处理相同的 POST 数据两次 为了避免这种情况 除了在单次提交后禁用按钮之外 大多数 Web 框架 如 Struts 都提供了令牌机制 我正在 GWT 中寻找与此等效的内容 如果您
  • 如何获取上传文件的最后修改日期?

    我上传一个 XML 文件以将其内容迁移到我的数据库 但我想首先存储该文件的最后修改日期 以确保该文件与上一个文件相比没有发生任何更改 如何获取文件的最后修改日期 有没有 javascript 函数可以做到这一点 当您使用文件输入上传文件时
  • ASP.NET MVC Excel导出文件格式错误

    我目前正在编写一个 ASP NET MVC 5 控制器操作 以将一些数据导出到 Excel 文件 使用我在此处找到的一些代码 它有效 主要是 它输出一个 Excel 文件 我可以打开该文件 但在显示以下错误消息之前无法打开 Export x
  • 单次跳跃最多回溯 n 个楼梯,最多 k 步

    您需要爬一个有 n 个台阶的楼梯 并且您决定通过跳上台阶来获得一些额外的锻炼 单次跳跃最多可以完成 k 步 返回爬楼梯时所有可能的跳跃顺序 并排序 我的实施显然给了我错误的答案 def climbingStaircase n k final
  • 创建 Outlook 规则以根据主题行中的文本创建文件夹(如果需要)[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我正在寻找一种清晰的方法来使用 vba 读取收到电子邮件的主题行 以便创建新文件夹或仅使用现有文件夹将电子邮件移入 我看过一些 vba 示例 但没有一个解决在 Outlook 的
  • 如何在新的heroku应用程序中使用okta oauth登录

    我在我的express node js 应用程序中使用okta oauth 当我在 heroku 中部署并运行新应用程序并浏览登录页面时 我收到 404 状态代码 由于某种原因 我无法验证我的第三方 okta 应用程序的合法性 然而 在本地
  • Cookie 不会删除

    所以我的index php 中有这样的代码 如果用户选中了记住我框 那么它将设置一个名为 RememberMe 的 cookie 有效期为 2 周 这部分工作正常 现在我遇到的问题是当他们按下注销时删除这个cookie 按注销后 它们会被重
  • 替换字符串中的单个字符

    问题是需要替换给定字符串中的单个字符 同时保留字符串中的其他字符 代码是 if command equalsIgnoreCase replace single System out println Enter the character t
  • 保持两个线程之间的布尔值同步

    在一个线程 线程2 中 我更改了一个值 例如 CheckSuccess false 现在主线程 thread1 GUI Form 没有接收到更改 如何 传播 所有线程周围的更改 我的印象是线程应该操纵数据 而不是在单独的实例上工作 除非被告
  • 何时何地放置 @class 声明

    我正在开发一个包含多个自定义类的项目 我有一个CardModel NSObject 具有一些整数属性来保存数据 以及Deck NSObject 有一个数组可以容纳一堆CardModels然后一个CardView UIView 有一个Card