我无法在我的项目中设置的视图上测试相等性。
这是一篇很长的帖子,请耐心等待。我有3个单独的视图设置为同一个XIB的一部分。
每个视图都通过IBOutlet连接到文件所有者(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) {
为什么会这样?
答案 0 :(得分:2)
因为您使用不同的类进行相等性测试(UIView和Puzzle1)。你的currentPuzzleView应该是指向Puzzle1 Puzzle2 Puzzle3这三个类之一的指针。如果你肯定需要为这些拼图视图使用三个不同的类,请尝试向它们添加标签并更改
@property (nonatomic, retain) UIView *currentPuzzleView;
到
int currentPuzzleViewTag;
在viewDidLoad:
时将其设置为1,并在选择不同的视图时将标记更改为适当的。
答案 1 :(得分:1)
这只是一种预感,但初始化时p1
可能是nil
'。这实际取决于您将currentPuzzleView
设置为p1
的位置。可能是出口指向什么(尚未)。