2013-01-18 99 views
0

至少我認爲這是一個基本問題。我剛開始以編程方式處理視圖。爲故事板創建的視圖添加子視圖

在RouteCaptureViewController.h:

@property (strong, nonatomic) IBOutlet UIView *routeCaptureSuperView; 

@property(nonatomic, weak) IBOutlet UIImageView *captureImageView; 
@property(nonatomic, retain) IBOutlet UIImageView *previewImageView; 
@property (weak, nonatomic) IBOutlet UIView *captureRouteButtonView; 

在我的故事板:

enter image description here

所有網點的連接是否正確,我檢查。

我在這樣並沒有什麼方法實現addSubview情況:

[self.routeCaptureSuperView addSubview:self.captureRouteButtonView]; 
    [self.routeCaptureSuperView addSubview:self.captureImageView]; 

以下幾行代碼曾任職:

[self.captureImageView removeFromSuperview]; 
[self.captureRouteButtonView removeFromSuperview]; 

我知道self.routeCaptureSuperView是不是nil從NSLog的。

+0

你期待什麼發生?你已經添加了一個UIView和2個UIImageViews,但是它們都將是空白的,除非你在其中放置了圖像/顏色。 – Fogmeister

+0

@Fogmeister。所以我顯然在這裏錯過了一些東西。採取captureRouteButtonView。我將其添加到故事板,並在視圖最初加載時顯示出來。我有一個IBOutlet指針,* captureRouteButtonView,指向它。我的想法是,當我用* captureRouteButtonView實現addSubview時,它應該添加我在Storyboard中創建的視圖,並使用它包含的按鈕來完成。 – Ramsel

回答

1

如果我理解正確的話,你和你刪除的意見,再次添加他們後,我可以做一個猜測:

在那一刻你發送removeFromSuperview你的意見他們得到釋放,因爲它們被聲明爲唯一weak
弱意味着如果由於與該對象的最後一個強關係被釋放而釋放該對象,則該屬性將不會被釋放。

父視圖是保持與這兩個視圖的最後一個強關係的對象。

嘗試在@property聲明的兩個子視圖的改變weakstrong

+0

這工作,並幫助我更多地瞭解基本的Objective-C開發。我只是感到困惑,並認爲自從我在Storyboard中創建它們後,它們仍然存在於某處。但是,由於我基本上在這個視圖控制器中切換視圖,我在考慮使用層次結構中視圖的索引可能是更合乎邏輯的方式。 – Ramsel

+0

關於您的解決方案的問題:我仍在學習,只使用ARC,因此尚未密切關注內存管理。如果我將'@ property'更改爲'strong',我應該關心他們的釋放/釋放嗎?或者當View Controller卸載時ARC會照顧到這一點? – Ramsel

+0

你根本不需要在ARC中發佈。但是,您仍然必須考慮一些關於內存管理的內容,以避免保留週期等問題。 Stackoverflow有關於ARC的很好的問題,很好地解釋了這個話題。順便說一句,如果你只是想「切換」視圖,你可能只需將隱藏設置爲YES和NO。 –

相關問題