Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 什么';接口中的首选类别或私有属性_Objective C_Ios_Xcode4 - Fatal编程技术网

Objective c 什么';接口中的首选类别或私有属性

Objective c 什么';接口中的首选类别或私有属性,objective-c,ios,xcode4,Objective C,Ios,Xcode4,对于类中的属性,什么是更可取的和干净的解决方案。在接口定义(.h文件)中使用类别(匿名)或@private注释。 属性不应由其他类继承 比尔, Mybeck和@private是两个不同的东西。类别扩展了类,您可以在其中向类添加方法,@private是其他类无法直接访问您的属性并且必须使用您的访问器的地方。如果您想要子类无法访问的IVAR,请在接口中使用@private @interface MyClass : NSObject { @private int num; //private attr

对于类中的属性,什么是更可取的和干净的解决方案。在接口定义(.h文件)中使用类别(匿名)或@private注释。 属性不应由其他类继承

比尔,
Mybeck和@private是两个不同的东西。类别扩展了类,您可以在其中向类添加方法,@private是其他类无法直接访问您的属性并且必须使用您的访问器的地方。如果您想要子类无法访问的IVAR,请在接口中使用@private

@interface MyClass : NSObject
{
@private
int num; //private attribute where subclass can't access
}

首先读一下这个,了解
@private
修饰符

然后回答你的问题

一个匿名类别被称为
类扩展
,这是我用来保持API干净和不公开宣布IVAR的

e、 g

因此,我在类中使用了
NSDate*someDateImWorkingWith
,但是导入我的头文件的人如果不进行一点挖掘,就不会知道它的存在。这对我来说很好,你的想法可能会有所不同

// .h
@interface MyClass : NSObject

@end

// .m
@interface MyClass ()

@property (nonatomic, strong) NSDate *someDateImWorkingWith;

@end

@implementation MyClass

@synthesize someDateImWorkingWith = _someDateImWorkingWith;

@end