ios - 我应该在 Objective C 中的什么地方声明一个实例属性?

标签 ios objective-c xcode uitextfield uikit

我试图在 Objective C 中为 UITextField 对象声明以下实例属性:

@property(nonatomic) BOOL clearsOnInsertion;

我应该在哪里声明它并将它正确地链接到我在 main.storyboard 中创建的文本字段,以便在用户开始输入时达到清除文本的预期效果?

最佳答案

一个。一般而言:

必须在 .h 文件中声明声明的属性是完全错误的:

a) 您必须在接口(interface)中声明实例属性。至少有三种类型的接口(interface):

  • “真实”的主要(类)接口(interface),带有 @interface … : …
  • 类延续@interface …()
  • 类接口(interface)@interface …(…)

其中...是一个类名。

b) 没有规定接口(interface)必须放在.h 文件中。没有规则。 通常 类延续位于 .m 文件中。这就是他们的目的(看 B)。 通常类别接口(interface)和类接口(interface)位于.h 文件中。但是,如果您想将一些小的东西保密,将类接口(interface)放在 .m 文件中也没有错。

对于编译器来说没有任何意义,因为它在编译的一开始就合并了所有包含的头文件,然后就不知道源代码是从哪里来的了。 (老实说,他知道它是为了更好的错误消息,但他的工作并不依赖于它。)

B.不太一般

您必须在某个位置放置一个界面,让应该阅读它的人,可以阅读它。由于属性通常是公共(public)可访问的并且 .h 文件是公共(public)可读的,因此很明显在许多情况下将它们放入 .h 是正确的选择。但是有一个信息隐藏和封装的私有(private)属性的概念。

C.在你的情况下

在早期,IB 只能读取 .h 文件中的导出。这样做的缺点是您必须将所有导出公开,即使存在私有(private)类 bundle 组合并且只有 IB 应该访问导出。

从版本 what.ever 开始,您可以将它放入 .m 文件中的类延续中,以保持它们的私有(private)性。在许多情况下,这是一个不错的选择。

关于ios - 我应该在 Objective C 中的什么地方声明一个实例属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37914936/

相关文章:

ios - XMPPFramework - 不断收到错误代码 503 服务不可用

ios - 设置为[UIImage new]后恢复navigationBar背景图

ios - Firebase 3.6.0 (Auth) - 使用 Swift 3.0 检测特定错误

ios - UISwitch 控件在 iPad 4.3 模拟器中移动

ios - 以编程方式更改导航栏标题 : Add a symbol and change its color

ios - 将用户位置传递给MKMapItem

ios - 无法从 UITableViewCell 导出自定义类

ios - Cordova/PhoneGap iOS HTTPS/SSL 问题

ios - 在 iOS 应用程序中存储和检索单条信息的合理、现代的方式

ios - Xcode中从一个项目到另一个项目的引用文件