NSArray作为Class中的私有数据?

时间:2012-08-23 19:29:44

标签: objective-c class object nsarray

我最近开始学习Objective-C。我决定上一个名为" Student"具有属性年龄,名称,以及重要的类。我把这些类放在一个充满NSStrings的NSArray中。我的问题是,如果我将它定义为@property,它会自动为它创建一个setter和getter方法。我不想在课堂上这样做。如何在类中定义NSArray作为私有数据,而不允许使用setter和getter?

这是标题代码:

#import <Foundation/Foundation.h>


@interface Student : NSObject

@property NSString * Name;
@property unsigned short age;
@property BOOL isFullTime;
@property NSMutableArray * Classes;

@end

[NSGreeter ThanksGuys];

3 个答案:

答案 0 :(得分:4)

你有几个流行的选择。当然,您可以根据需要替换类型:

将其放在标题中,并指定@private访问权限。

// Student.h
@interface Student : NSObject
{
@private // << note: protected is the default when declared in this scope.
   NSArray * ivar;
}
@end

<强> B:

将其放在@implementation块中。您可以指定访问权限,但这通常不是问题,因为它对任何其他翻译都不可见。

// Student.m
@implementation Student
{
@private // << note: private is the default when declared in this scope.
   NSArray * ivar;
}
@end

<强> C:

在类继续中声明它:

// Student.m
@interface Student ()
{
  NSArray * ivar;
}

@end

<强> d

在类继续中声明为属性:

// Student.m
@interface Student ()

@property (nonatomic, copy) NSArray * ivar;

@end

答案 1 :(得分:2)

@interface Student : NSObject {

    @private
    NSMutableArray * Classes;

}

@property NSString * Name;
@property unsigned short age;
@property BOOL isFullTime;

@end

答案 2 :(得分:1)

使用关键字@private

@interface Student : NSObject
{
    @private
    NSMutableArray * Classes;
}

@property NSString * Name;
@property unsigned short age;
@property BOOL isFullTime;

@end