在.h文件中声明的任何UIKit元素是公共的还是在objective c中受保护的?



我是iOS开发的新手,我有一个疑问,如果我在一些。h文件中声明任何UIKit元素,如UILabel *label,而不是在。m文件中,如果我将这个类导入到另一个类并通过使用这个类实例访问它,它是受保护的还是对其他类公开的?

#import <UIKit/UIKit.h>
@interface Latestnews_ViewController : UIViewController
@property (strong, nonatomic) IBOutlet UIImageView *latestnewsbackimg;
@property (strong, nonatomic) IBOutlet UIImageView *latestnewsdateimg;
@property (strong, nonatomic) IBOutlet UILabel *latestnewsdate;

latestnewsdate是公开的还是受保护的?

1)。代码中的属性可以被任何导入"Latestnews_ViewController"的类访问。也就是说,它对所有类都是公共的。

2)。你也可以在类

中创建私有属性

的例子:

@interface Latestnews_ViewController : UIViewController
{
NSString *latestnewsbackimg;  //private
NSString *latestnewsdateimg;  //private
}
NSArray *array;  //public
@end

.h文件中声明的属性是public。所以你可以通过Latestnews_ViewController的实例从任何类调用latestnewsdate。你可以把它命名为public

类需要声明(接口)和定义(实现)。要使用class,您需要查看它的声明(以了解它具有哪些方法)。因此,您可以在希望使用Foo类的每个文件中键入@interface Foo..。但这是痛苦。这就是为什么你把它移动到.h文件和包含它在另一个文件。

严格来说,C编译器的。m和。h文件没有区别,.h文件只是被预处理器包含,所以编译器可能会认为你直接在每个文件中包含了你的类声明。

所以,如果你在接口中声明了一些东西,并将带有这个接口的文件包含到另一个文件中,整个接口都是可访问的,没有什么是"受保护的"。在ObjC中没有"保护"这种东西。

你所说的"声明任何UIKit元素"是ObjC 属性,字段,访问器和mutator的语法糖(你应该阅读属性)。它们是接口的一部分,不受保护。但是字段怎么做呢,因为它不是接口的一部分。

要使成员"protected"直接在接口中声明,在.m文件中实现它。没有人会知道这个文件之外,所以它将被保护。

最新更新