2011-11-05 48 views
1

我在我的項目中設置的視圖上測試相等性時遇到了問題。測試UIViews的相等性,需要澄清

這是一篇很長的文章,請耐心等待。我有3個獨立的視圖設置爲同一個XIB的一部分。

enter image description here

每個視圖經由一個IBOutlet enter image description here enter image description here enter image description here

僱主本身連接到文件所有者(UIViewController中)是一個UIViewController

@interface PuzzleViewController : UIViewController { 

裏面FileOwner視圖是宣佈爲:

IBOutlet Puzzle1 *p1; 
IBOutlet Puzzle2 *p2; 
IBOutlet Puzzle3 *p3; 

@property (nonatomic, retain) IBOutlet Puzzle1 *p1; 
@property (nonatomic, retain) IBOutlet Puzzle2 *p2; 
@property (nonatomic, retain) IBOutlet Puzzle3 *p3; 

另外我有

UIView *currentPuzzleView; 
@property (nonatomic, retain) UIView *currentPuzzleView; 

在.m文件,在初始化時,我宣佈目前看來是P1

[self setCurrentPuzzleView:p1]; 

後,我想檢查,如果當前視圖是其實p1。該比較失敗。

if ([[self currentPuzzleView] isEqual:p1]) { 

此外失敗以及

if ([self currentPuzzleView] == p1) { 

這是爲什麼?

回答

2

因爲您使用不同的類進行相等性測試(UIView和Puzzle1)。你當前的PuzzleView應該是指向三個類Puzzle1 Puzzle2 Puzzle3中的一個的指針。如果你一定要使用三種不同類的益智意見,嘗試添加標籤,對他們在viewDidLoad:改變

@property (nonatomic, retain) UIView *currentPuzzleView; 

int currentPuzzleViewTag; 

將其設置爲1,改變標籤不同時適當視圖被選中。

+0

非常酷;謝謝 – JAM

1

這只是一個預感,但也許p1nil「初始化」。這真的取決於你在哪裏設置currentPuzzleViewp1。這可能是該出口指向什麼(還)。

+0

這是有見地的!讓我測試它 – JAM