2010-06-22 33 views
0

我想傳遞一個UIView到另一個階級 - 這有點兒工作,但我不能保留指針...爲什麼我不能保留UIView指針?

在我.h文件中

我宣佈的觀點:

UIView *someView; 

我添加屬性

@property (nonatomic, retain) UIView *someView; 

而在.M-文件I合成屬性

@synthesize someView; 

然後,我必須設置視圖的方法(這是在.h文件中設置以及 - 相信我:):

-(void)makeViewPointer:(UIView *)myView{ 
    someView = [[UIView alloc] init]; 
    someView = myView; 

    for(UIView *aView in someView.subviews){ 

     NSLog(@"tag %d", aView.tag); 

    } 
} 

到目前爲止,一切的工作。當我登錄someView時,我得到一個指針,所有的子視圖都是可訪問的。

我從另一個類調用此方法 - 這似乎工作正常。

NOW - 我有一個IBAction爲建立做這個觀點的東西按鈕被點擊

-(IBAction)doSomething:(id)sender{ 
    NSLog(@"show the view %@", someView); 

    for(UIView *aView in someView.subviews){ // doesn't output anything 

     NSLog(@"tag %d", aView.tag); 

    } 

} 

後,在這一點上,someView-VAR又是空的 - 爲什麼????

我假設,當我使用@property(nonatomic,retain),變量會自動保留?

我也試圖在初始化保留變量:

someView = [[UIView alloc] retain]; 

不起作用

someView = [[UIView alloc] init]; 
[someView retain]; 

不工作要麼...

什麼我在地球上做錯了嗎?

感謝您的幫助!

回答

0

幾件事。

someView = [[UIView alloc] init]; 
someView = myView; 

以上錯誤。首先,您要創建一個新的UIView實例並將其分配給。然後,您將myView分配到。這是造成內存泄漏的原因,因爲你從未發佈過,你只是重新分配了它。

我認爲你正在試圖做的是這樣的:

[someView release]; 
someView = [myView retain]; 

然後你必須確保你釋放當你完全完成它。

這就是@property (nonatomic, retain)會做,但使用的是你必須做的:

[self setSomeView:myView]; 
+0

感謝湯姆 - 這有一定道理......但是 - 這是不工作... 我用: - (空)makeViewPointer:(UIView的*)MyView的{ \t [self setSomeView:myView]; \t } 但在下一次«someView»調用 - 它再次是空的...? 該死的 – Urs 2010-06-22 19:53:59

+0

你確定這個班級正在被保留嗎? – 2010-06-23 06:43:41

0

如果不使用自助點符號,那麼你不保留分配給對象屬性。

您需要使用:

self.someView = myView; 

for(UIView *aView in self.someView.subviews){ 

自符號調用管理保留在合成的存取方法。如果你不使用自己,沒有任何保留。

+0

感謝TechZen ... 試過了 - 但它是不工作... 我忘了提,我試圖自點符號已經... 這是奇怪的... – Urs 2010-06-22 19:55:02

+0

你可以嘗試發佈您的實際代碼。這可能是某個地方的細節錯誤。你沒有理由不去工作。 – TechZen 2010-06-22 22:22:55

0

行 - 我想,我做的一切都是錯了,因爲可能;)

我應該提到,我想,我已經成立了IB的意見。在那裏,我添加了我正在講的課程,對我的父母來說(聽起來令人困惑,我知道 - 但是,嘿,這是IB:)...

目標是有某種疊加視圖流行 - 但我不想將這個視圖放在單獨的nib文件中。所以,這就是爲什麼我只是從類庫中添加類。

我現在終於放棄了,移動覆蓋到一個單獨的筆尖,使我的類視圖 - 控制器和...一切正常...

感謝提示反正傢伙 - 我沒有學會一個好一點......

相關問題