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