簡體   English   中英

如何在Objective-C中測試相等性?

[英]How to test equality in Objective-C?

比較頂視圖時,第一個{}無法執行。 ==平等測試失敗。

init ,我

    [self setCurrentPuzzleView:p1];

后來,我

if ([self currentPuzzleView] == p1) {
    NSLog(@"Removing P1 from SuperView");
    [p1 removeFromSuperview];
} else {
    NSLog(@"Removing P2 from SuperView");
    [p2 removeFromSuperview];
}

這是現在應該如何比較觀點? 我認為==對於指針類型是可以的

if ([self currentPuzzleView] == p1) {

視圖之間的關系通過InterfaceBuilder建立,其中每個視圖(p1,p2等)都聲明為IBOutlet Puzzle1 *p1

==在Objective-C中檢查身份。 這是兩個指針是否指向同一個對象。

測試相等使用: [objectA isEqual:objectB] 默認情況下,它與==相同,但可以覆蓋它以具有自定義相等性。

編輯

說完了,重新閱讀了你的問題。 這兩個指針看起來好像指向同一個對象。 在比較它們之前,嘗試打印您要比較的兩個對象。 還要嘗試打印它們的內存地址: NSLog(@"Address: %d", &p1); 可能會做你。

我會為該視圖設置標記並比較標記。

if(view.tag == 66)
{
 // do something
}
else
{
// else do this
}

你的代碼看起來很好。

也許self.currentPuzzleview正在其他地方修改?

在代碼中設置斷點並檢查值,或在NSLog()調用中打印值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM