2011-04-16 81 views
0

我希望這是一個簡單的問題,因爲我對可可非常陌生。我創建了一個具有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)。什麼行爲會導致這種情況?我正在創建bleep對象,設置值類型很好,但是這個對象似乎不想保存任何東西。

我的課:

@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 
+0

這將有助於發佈你的'@interface'和你的'setImgView:'或'@ synthesize'的相關部分。 – Anomie 2011-04-16 03:57:41

回答

0

你沒有足夠的展示代碼在這裏,但我的猜測是,你沒有做好這方面的屬性。您是否聲明它:例如:

@property (nonatomic, retain) UIImageView *imgView; 

然後,你是綜合它還是讓你設置/得到你自己?如果你做了後者,你可能犯了一個錯誤,即在你的制定者中通過自我引用它。

如果這不是其中之一,則顯示更多代碼。

...

這裏是你的代碼應該是什麼樣子:

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

@implementation Bleep 
@synthesize imgView; 

@end 

類中的指針被通過屬性暴露出來。這看起來有些重複,但在Xcode 4中,多次輸入這些東西的痛苦已經消失了。

+1

請注意,聲明屬性的默認設置語義是'assign',所以如果您沒有指定任何se​​tter語義屬性(或指定'assign'),那麼該類負責管理聲明屬性的內存。 – 2011-04-16 04:08:41

+0

實際上,不再需要聲明一個實例變量。如果沒有聲明,Objective-C 2.0會自動創建一個支持實例變量。 – 2011-04-16 04:09:42

+0

@Bavarious:好奇的是,蘋果的代碼仍然充滿了他們。我在過去的一年半中下載了無數的例子。 – Rob 2011-04-16 04:31:15