我最近开始学习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];
答案 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