Objective c 测试UIView的平等性,需要澄清

Objective c 测试UIView的平等性,需要澄清,objective-c,ios,Objective C,Ios,我在测试项目中设置的视图的平等性时遇到困难 这是一篇很长的文章,请耐心听我说。作为同一XIB的一部分,我有3个单独的视图 每个视图都通过IBOutlet连接到文件所有者(UIViewController) 所有者本身是UIViewController @interface PuzzleViewController : UIViewController { 文件所有者视图内部声明为: IBOutlet Puzzle1 *p1; IBOutlet Puzzle2 *p2; IBOutlet P

我在测试项目中设置的视图的平等性时遇到困难

这是一篇很长的文章,请耐心听我说。作为同一XIB的一部分,我有3个单独的视图

每个视图都通过IBOutlet连接到文件所有者(UIViewController)

所有者本身是UIViewController

@interface PuzzleViewController : UIViewController {
文件所有者视图内部声明为:

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) {

这是为什么?

这只是一种预感,但可能
p1
在初始化时是
nil
。这实际上取决于您将
currentPuzzleView
设置为
p1
的位置。这可能是因为出口指向nothing(尚未)。

因为您正在使用不同的类进行相等性测试(UIView和Puzzle1)。您当前的拼图视图应该是指向这三个类之一的指针。如果您确实需要为这些拼图视图使用三个不同的类,请尝试向它们添加标记并进行更改

@property (nonatomic, retain) UIView *currentPuzzleView;


viewDidLoad:
时将其设置为1,并在选择不同的视图时将标记更改为适当的。

这很有见地!让我来测试一下
int currentPuzzleViewTag;