#import 和 @class 之间有什么区别,什么时候应该使用其中之一?

2024-01-06

在过去的一个月左右的时间里,我一直在自学 Objective-C(我是一名 Java 专家),现在我的大脑已经掌握了其中的大部分内容。目前让我感到困惑的一件事是:通过 @class 导入类与 #import 导入类有什么区别?

一种比另一种更好,还是在某些情况下我需要使用一种而不是另一种?到目前为止我一直只使用#import。


#import将有问题的整个头文件放入当前文件中;该文件的任何文件#import也包括在内。另一方面,@class(当在带有某些类名的行上单独使用时)只是告诉编译器“嘿,您很快就会看到一个新标记;它是一个类,所以要这样对待它)。

当您有“循环包含”的潜力时,这非常有用;即,Object1.h 引用Object2,Object2.h 引用Object1。如果你#import将两个文件放入另一个文件中,编译器在尝试这样做时可能会感到困惑#importObject1.h,查看它,看到Object2.h;它试图#importObject2.h,并查看Object1.h等。

另一方面,如果每个文件都有@class Object1; or @class Object2;,那么就没有循环引用。只要确保实际上#import将所需的标头添加到您的实现 (.m) 文件中。

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

#import 和 @class 之间有什么区别,什么时候应该使用其中之一? 的相关文章

  • 不使用 ARC 时替换 __weak

    我有这行代码 weak NSBlockOperation weakOperation operation 这是触发此编译器错误 weak attribute cannot be specified on automatic variable
  • objectForKeyedSubscript:在 iOS 5.1 上崩溃

    我正在运行一些执行 NSDictionary objectForKeyedSubscript 的代码 它在 iOS 5 上崩溃 但在 iOS 6 上则不然 我正在使用 xcode 4 5 2 并针对 iOS 6 0 SDK 进行编译 我认为
  • scanForPeripheralsWithServices:options: 指定服务时无法连接

    使用 scanForPeripheralsWithServices options 时 我能够在使用时发现服务 Scanning with nil services will return all devices NSLog Looking
  • 在 Interface Builder 中添加背景图像

    我正在尝试使用 Xcode 4 2 添加自定义图像作为我的应用程序的背景 但我不太确定该怎么做 我可以在 Interface Builder 中添加纯色作为背景 但我没有看到添加自定义图像的选项 我在谷歌上搜索了这个问题并研究了几个小时 但
  • 设置 UIMenuController 箭头方向不起作用

    我有一个UIMenuController我添加了一些额外的项目 我希望菜单位于我选择的文本下方 所以我尝试了 UIMenuController sharedMenuController arrowDirection UIMenuContro
  • 当具有 PagingEnabled 的 UIScrollView 更改页面时如何更新 UIPageControl?

    我该如何做到这一点 以便当用户滚动到 UIScrollView 中的新页面时 UIPageControl 更新 我以前用过这个 看起来效果很好 请务必将 UIScrollView delegate 设置为 self pragma mark
  • UITableView框架改变动画问题

    我用谷歌搜索了很多这个问题 但似乎没有答案 所以我希望你们中的一些人知道如何处理这个问题 我有一个具有 tableview 的视图控制器 当我用动画更改视图框架时 一切都很顺利 除了一种特殊情况 当 tableview 的项目多于屏幕大小时
  • iOS - 单元测试异步代码

    我试图测试的方法部分如下 void configureTableFooterView dispatch async dispatch get main queue self tableView tableFooterView nil if
  • UIImage initWithContentsOfFile 不起作用

    我有问题 我想避免 UIImage imageNamed 所以我做了 UIImage prodImg UIImage alloc initWithContentsOfFile myimage png controller productIm
  • iOS - 自动调整 CVPixelBufferRef 的大小

    我正在尝试裁剪和缩放CMSampleBufferRef基于用户的输入 基于ratio 下面的代码采用 CMSampleBufferRef 将其转换为 CVImageBufferRef 并使用 CVPixelBuffer 根据其字节裁剪内部图
  • C++ 引用类型作为 Objective-C++ 中的实例变量

    Objective C 中禁止将 C 引用类型用作实例变量 我该如何解决这个问题 您不能明智地使用引用作为实例变量 因为无法初始化实例变量并且无法重新放置引用 另一种选择可能是简单地使用 可能是智能的 指针 另一种让您更接近 C 行为的可能
  • 为什么 Obj-C 属性默认所有权“分配”而不是“强”

    我正在向旧项目添加 Swift 类 一切进展顺利 直到我尝试向 Swift 类添加属性 生成的标头无法编译 我认为问题是 在生成的代码中 Swift 省略了strong所有权并仅将其声明为nonatomic 这通常应该足够了 因为 prop
  • 在 xcode 中使用线程调用函数

    我在 xcode 中创建了一个线程 并且给出了从该线程调用的函数名称 但我的问题是 给 call 的函数名称没有被调用 知道何时在该函数中放置断点 code NSThread myThread myThread start self per
  • 动态增加UITableViewCell中UILabel的高度?

    我有一个 UITableView 其中显示一个自定义单元格 我的单元格有两个标签和一个视图 如下图所示 我已经像这样给出了左视图的约束 项目标签限制 中心视图约束 右视图的约束 I am using a bean class to stor
  • 恢复从未付款过的用户的应用内购买

    我正在尝试在我的应用程序中测试应用程序内购买 当我与购买了应用程序内购买的测试用户恢复应用程序内购买时 一切正常 但是当我尝试与用户恢复应用内购买时didn t在我期望框架调用以下方法之前进行应用内购买 paymentQueue resto
  • 如何在iPhone应用程序中的类结构中实现主键和外键表数据[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如何连接sqlite数据库中的两个表数据 if sqlite3 open dbPath UTF8String database SQL
  • UIButton 图像未更改/更新

    首先 我对 Objective C 还很陌生 并且仍在尝试尽可能多地学习 所以请耐心等待 现在我有一个以编程方式创建的 UIButton 按下按钮时 将显示一个 UIActionSheet 其中包含 相机 选择照片 或 取消 选项 然后 按
  • 释放 Core Foundation 对象引用

    我是否需要释放 Core Foundation 对象来清理内存 如果是这样 怎么办 例如 在代码中 ABAddressBookRef addressBook ABAddressBookCreate CFArrayRef peopleArra
  • 当我从我转向的视图控制器返回时,为什么我的 UITableView 的格式完全出错了?

    我有一个UITableView使用自定义单元格 其中有一些标签可以动态决定单元格的高度 当我点击一个单元格并转到一个新的视图控制器时 返回后所有单元格的格式完全混乱 我无法弄清楚是什么导致了它 这是细胞通常的样子 我对它们设置了一些非常基本
  • UITableview 中的水平和垂直滚动[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 I want to make a lineup for a festival You can see what I want to a

随机推荐