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

时间:2016-06-29 10:10:35

标签: ios objective-c xcode public protected

我是iOS开发中的新手,我怀疑如果我在.m文件中的some.h文件中声明任何UIKit元素,如UILabel *标签,如果我导入此文件,它是否受到保护或公开到其他类类到另一个类并使用此类实例访问它?

#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是public还是protected ??

3 个答案:

答案 0 :(得分:0)

1)。导入“Latestnews_ViewController”的任何类都可以访问代码中的属性。即所有课程都是公开的。

2)。你也可以在一个类中创建一个私人财产

示例:

@interface Latestnews_ViewController : UIViewController
{
NSString *latestnewsbackimg;  //private
NSString *latestnewsdateimg;  //private
}

NSArray *array;  //public

@end

答案 1 :(得分:0)

.h文件中声明的属性为public。因此,您可以通过任何类的latestnewsdate实例调用Latestnews_ViewController。所以你可以把它叫做公开。

答案 2 :(得分:0)

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

严格地说,C编译器的.m和.h文件之间没有区别。 .h文件只是由预处理器包含,因此编译器可能会认为您直接在每个文件中包含类的声明。

因此,如果您在接口中声明某些内容,并将包含此inetrafce的文件包含到另一个文件中,则可以访问整个接口,不会“保护”任何内容。在ObjC中没有“受保护”的东西。

你所谓的“声明任何UIKit元素”是ObjC 属性,字段,访问器和mutator的语法糖(你应该阅读有关属性的内容)。它们是界面的一部分而不受保护。 field 是如何做的,因为它不是接口的一部分。

要使成员“受保护”,请直接在接口中的.m文件中声明它。没有人会在这个文件之外知道它,hense它会受到保护。