我正在编写 Apple 开发人员 pdf 第 76 页的练习 3,位于类类别和扩展部分“使用 Objective C 编程”中,可在此处找到:( https://developer.apple.com/library/mac/documentation/cocoa /conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html )
我的 XYZPerson 标题如下所示:
#import <Foundation/Foundation.h>
@interface XYZPerson : NSObject
@property (readonly) NSNumber *height;
@property (readonly) NSNumber *weight;
-(NSNumber *)measureHeight;
-(NSNumber *)measureWeight;
@end
我的实现文件如下所示:
#import "XYZPerson.h"
@property (readwrite) NSNumber *height;
@property (readwrite) NSNumber *weight;
@end
/////////////////////
@implementation XYZPerson
-(NSNumber *)measureHeight{
if(!_height){
_height = [[NSNumber alloc] init];
}
return _height;
}
-(NSNumber *)measureWeight{
if(!_weight){
_weight = [[NSNumber alloc] init];
}
return _weight;
}
@end
然后在我的主文件中我有:
#import <Foundation/Foundation.h>
#import "XYZPerson.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
XYZPerson *aPerson = [[XYZPerson alloc] init];
[aPerson setHeight: [NSNumber numberWithInt:72] ];
[aPerson setWeight: [NSNumber numberWithInt:190] ];
NSLog(@"%@ %@",[aPerson measureHeight],[aPerson measureWeight]);
}
return 0;
}
可能有不止一个错误与我提出的问题无关,我现在是 Objective C 的新手。我得到的确切编译器错误是在上面写着的那一行,
[aPerson setHeight: [NSNumber numberWithInt:72] ];
编译器错误显示,“ARC 语义问题。‘XYZperson’没有可见的@interface 声明选择器‘setWeight:’。