两个类的属性

时间:2013-04-04 10:37:52

标签: objective-c

我希望得到一个看起来像这个player.type.property的结果,这个例子是UILabel,self.label.text。 .text是这两个类的属性。

我的建议是做这样的事情:

player.type = [[MyCustomObject alloc] init];
player.type.property = @"value";

虽然我不太确定如何正确地执行此操作,但我尝试的每种方法都不起作用。

以下是我的尝试:

Marketplace.h
#import "Item.h"
@interface Marketplace : NSObject
@property (nonatomic, assign) Item *market;

Item.h
@interface Item : NSObject
@property (nonatomic, assign) int price;

Starter.m
#import "Marketplace.h"
#import "Item.h"
@implementation MainGameDisplay
{
    Marketplace *market;
    Item *itemName;
}

-(void) executedMethod {
    market.itemName = [[market alloc] init];
    //2 errors: "Property 'itemName not found on object of type 'MarketPlace'" and "No visible @interface for 'MarketPlace' declares the selector alloc"
    market.itemName.price = 5; //"Property 'itemName' not found on object of type 'Marketplace*'"
}

2 个答案:

答案 0 :(得分:1)

每个指向类对象的指针都必须是alloc init,因此你需要在其类中覆盖 - (id)init。

Item.h
@interface Item : NSObject
@property (nonatomic) NSInteger price;


Marketplace.h
#import "Item.h"
@interface Marketplace : NSObject
@property (nonatomic, strong) Item *item;//Item is a class, must use strong or retain
Marketplace.m
-(id)init{
if (self = [super init]) {
  self.item = [[Item alloc] init];//Item must alloc together when MarcketPlace init
}
return self;
}

*然后您只需启动市场

@implementation MainGameDisplay
{
    Marketplace *market;
    Item *itemName;
}

-(void) executedMethod {
    market = [Marketplace alloc] init];
//Now you can access
    market.item.price = 5;
}

答案 1 :(得分:0)

1。创建一个名为PlayerType的接口在那里放置一些属性并合成它们。 2.现在创建一个名为Player的接口并在那里导入PlayerType接口。 3.制作PlayerType接口的属性,如@property(非原子,强)PlayerType *类型。

  1. 现在变成了Player,它允许你访问一个属性的属性。