请帮助理解#import 如何在不使用继承的情况下工作。
所以我创建了一个名为 Person 的类和另一个名为 Body 的类(这两个类都继承自 NSObject)。
Body 类有 3 个 ivars(用属性设置)
int hands;
int feet;
int legs;
然后,我将 Body 类 ( *body) 的实例导入并创建到 Person 类中。我的理解是我现在已经从 Body 类中创建了一个“类型”。然后使用属性设置此 ivar。
然后,我主要从名为 person 的 Person 类创建了一个实例。Main 识别 person.body.feet 但我无法直接获取和设置它的值。唯一可以做到的方法是将其值传递给一个新的 int 变量,然后打印出新变量。
显然我是一个苦苦挣扎的新手,但我真的很想了解这个问题 -
#import <Foundation/Foundation.h>
#import "Person.h"
int main (int argc, const char * argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
Person *person = [[Person alloc]init];
// this works and NSLog prints out the value is 2
int feet = person.body.feet = 2;
NSLog(@"person.body = %i",feet);
// this does not work - NSLog prints out the value is 0;
[person.body setFeet:2];
NSLog(@"person.body = %i", person.body.feet );
[person release];
[pool drain];
return 0;
}
#import <Foundation/Foundation.h>
#import "Body.h"
@interface Person : NSObject {
Body *body;
}
@property (assign) Body *body;
@end
#import "Person.h"
@implementation Person
@synthesize body;
@end
#import <Foundation/Foundation.h>
@interface Body : NSObject {
int hands;
int feet;
int legs;
}
@property int hands;
@property int feet;
@property int legs;
@end
#import "Body.h"
@implementation Body
@synthesize hands;
@synthesize feet;
@synthesize legs;
@end