在cocoa中设置引用类型

时间:2011-04-16 03:52:59

标签: cocoa-touch

我希望这是一个简单的问题,因为我对可可很新。我创建了一个以UIImageView作为属性的对象。我在另一个程序中设置了属性,例如

Bleep* bleep = [[Bleep alloc]init];
bleep.heading = heading;
bleep.distance = distance;
bleep.instanceId = instanceId;
...
bleep.imgView = [[UIImageView alloc] initWithFrame:CGRectMake(x, y, bleepImg.size.width, bleepImg.size.height)];

不会抛出任何错误,但imgView为零(0x0)。什么行为会导致这种情况?我正在创建哔哔声对象,设置值类型就好了,但是这个对象似乎不想保留任何东西。

我的课程:

@interface Bleep : NSObject {

}
@property float x;
@property float y;
@property float distance;
@property int instanceId;
@property UIImageView* imgView;
@property float heading;

@end

@implementation Bleep
@synthesize x;
@synthesize y;
@synthesize distance;
@synthesize instanceId;
@synthesize heading;
@synthesize imgView;

@end

1 个答案:

答案 0 :(得分:0)

你这里没有显示足够的代码,但我的猜测是你没有正确地处理这个属性。你有没有声明它,例如:

@property (nonatomic, retain) UIImageView *imgView;

然后你是合成它还是制作/获取自己?如果你做了后者,你可能犯了错误,在你的二传手中通过自我引用它。

如果不是其中之一,请显示更多代码。

...

以下是您的代码应该是什么样的:

@interface Bleep : NSObject {
    UIImageView *imgview;
}
@property(nonatomic, retain) UIImageView* imgView;

@implementation Bleep
@synthesize imgView;

@end

类中的指针通过属性公开。这似乎有点重复,但在Xcode 4中,多次输入这些东西的痛苦已经消失了。