2

我最近开始学习Objective-C。我决定创建一个名为“Student”的类,其属性包括年龄、姓名,重要的是,还有类。我把这些类放在一个充满 NSString 的 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

[NSGreeterThanksGuys];

4

3 回答 3

4

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

A:

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

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

乙:

将它放在@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

丁:

在类延续中声明为属性:

// Student.m
@interface Student ()

@property (nonatomic, copy) NSArray * ivar;

@end
于 2012-08-23T19:35:59.233 回答
2
@interface Student : NSObject {

    @private
    NSMutableArray * Classes;

}

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

@end
于 2012-08-23T19:34:57.110 回答
1

使用关键字@private

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

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

@end
于 2012-08-23T19:36:20.247 回答