![]() |
1
15
从技术上讲,不是。属性实际上只是方法,所有方法都是公共的。我们在Objective-C中“保护”方法的方式是不让其他人知道它们。
实际上,是的。您可以在类扩展中定义属性,并且仍然
|
![]() |
2
10
这可以通过使用一个类扩展名(不是category)来实现,该扩展名包含在基类和子类的实现文件中。 类扩展名的定义类似于类别,但没有类别名称:
在类扩展中,可以声明属性,这样就可以合成支持ivar(XCode>4.4 ivar的自动合成也可以在这里工作)。 在扩展类中,可以重写/优化属性(将readonly更改为readwrite等),并添加对实现文件“可见”的属性和方法(但请注意,这些属性和方法不是真正私有的,仍然可以由选择器调用)。
其他人建议使用单独的头文件MyClass_protected.h,但是也可以在主头文件中使用
例子: 基类.h
基类.m
儿童班.h
儿童班
当你打电话
在.h文件中,不设置定义,因此任何导入此.h的类都不会看到受保护的类扩展名。
在基类和子类.m文件中,使用
|
![]() |
3
0
您可以在子类实现中使用这种语法。
|
|
4
0
你可以使用一个类别来达到你的目的
在子类中,将该类别导入到文件中 .m.公司 |
![]() |
pr0p · 与实例变量使用相关的Python OOP 7 年前 |
![]() |
tableguarder · 如何使我的类属性不能直接访问实例变量? 7 年前 |
|
olivier57 · 来自同一实例的字段保留值 7 年前 |
|
Hash Doe · 为什么类变量可以通过类实例访问?[副本] 7 年前 |
![]() |
jbk · 在设置这些实例变量时,我做错了什么? 7 年前 |
![]() |
hhprogram · Python实例变量的类型提示约定 8 年前 |
|
user4252294 · 设置未初始化实例变量 10 年前 |