我是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文件中实现它。没有人会知道这个文件之外,所以它将被保护。