Objective-C |从 .m 中获取声明和实现的属性和协议,并在 .h 接口中公开公开
Objective-C | Take properties and protocols declared and implemented from .m and expose publicly in .h interface
我需要重构现有代码以使其具有特定行为。为了实现这一点,我必须采用在 .m 文件的接口块内部声明的一些属性并将其传递给 .h 文件(以便从其他 类 公开访问它)。此外,还有一些在 .m 文件中声明和实现的方法,我必须在 .h 文件中声明。
这样做有什么问题吗?
最后,其中一些方法使用了在 .m 文件中声明和实现的协议。
我可以采用此协议,将其放入自己的协议文件中,然后通过 import <blabla.h>
语句使用它吗?
如果我能做到这一点,这个 .h 文件是否需要具有相应的 .m 实现文件?
I'm really new to objective-c, just a few weeks. I need to refactor an existing code to have certain behavior. In order to achieve that I'd have to take some properties declared inside of the interface block in the .m file and pass it to the .h file (for accessing it publicly from other classes). Also, there are some methods declared and implemented in the .m file that I'd have to declare in the .h file.
在大多数情况下,将 属性 声明从扩展移动到 header 中的接口应该没有问题。唯一的区别应该是范围。对于 .m 中的方法,只需将声明添加到 .h 中,它们将可用于导入它的任何内容。
Finally, some of those methods make use of a protocol declared and
implemented in the .m file.
Can I take this protocol, put it in its own protocol file, and make
use of it with an import statement? In case I can do this, does this
.h file need to have the according .m implementation file?
您可以只获取协议定义并将其移动到 header 文件中。它不需要.m。任何需要实现协议的东西都可以导入 .h 并实现任何需要符合它们自己的 .m 的东西。如果唯一需要了解协议的 classes 是那些将导入 class 的 .h 的 .m 与当前所属的协议,您也可以将协议从.m 到 class 的 .h 而不是为它创建一个单独的 .h。
• 无需为协议创建 .m
文件,因为没有实现。完成后,您可以将代码移动到新的 .h
文件并使用 import "file.h"
和 not <file.h>
导入它,这是为框架保留的.
• 将属性从 .h
移动到 .m
文件应该绝对不是问题。
• 另一种方法可能会产生一些编译时错误 - 您必须确保在 .m
文件之外访问这些属性中的任何一个。 编译器一旦您做出更改并尝试构建您的项目,将会通知您。
我需要重构现有代码以使其具有特定行为。为了实现这一点,我必须采用在 .m 文件的接口块内部声明的一些属性并将其传递给 .h 文件(以便从其他 类 公开访问它)。此外,还有一些在 .m 文件中声明和实现的方法,我必须在 .h 文件中声明。
这样做有什么问题吗?
最后,其中一些方法使用了在 .m 文件中声明和实现的协议。
我可以采用此协议,将其放入自己的协议文件中,然后通过 import <blabla.h>
语句使用它吗?
如果我能做到这一点,这个 .h 文件是否需要具有相应的 .m 实现文件?
I'm really new to objective-c, just a few weeks. I need to refactor an existing code to have certain behavior. In order to achieve that I'd have to take some properties declared inside of the interface block in the .m file and pass it to the .h file (for accessing it publicly from other classes). Also, there are some methods declared and implemented in the .m file that I'd have to declare in the .h file.
在大多数情况下,将 属性 声明从扩展移动到 header 中的接口应该没有问题。唯一的区别应该是范围。对于 .m 中的方法,只需将声明添加到 .h 中,它们将可用于导入它的任何内容。
Finally, some of those methods make use of a protocol declared and implemented in the .m file.
Can I take this protocol, put it in its own protocol file, and make use of it with an import statement? In case I can do this, does this .h file need to have the according .m implementation file?
您可以只获取协议定义并将其移动到 header 文件中。它不需要.m。任何需要实现协议的东西都可以导入 .h 并实现任何需要符合它们自己的 .m 的东西。如果唯一需要了解协议的 classes 是那些将导入 class 的 .h 的 .m 与当前所属的协议,您也可以将协议从.m 到 class 的 .h 而不是为它创建一个单独的 .h。
• 无需为协议创建 .m
文件,因为没有实现。完成后,您可以将代码移动到新的 .h
文件并使用 import "file.h"
和 not <file.h>
导入它,这是为框架保留的.
• 将属性从 .h
移动到 .m
文件应该绝对不是问题。
• 另一种方法可能会产生一些编译时错误 - 您必须确保在 .m
文件之外访问这些属性中的任何一个。 编译器一旦您做出更改并尝试构建您的项目,将会通知您。