每次

2012-05-04 26 views
0

我創建(用戶按下一個按鈕)許多的UIImageViews將1加到變量programmly,並以這種方式創建時分配一個標籤到每個:每次

int a; 

    if (a != nil){ 

     a = 0; 
    } 

    a = a + 1; 
    image1.tag = a; 

的問題是,爲a =一個+1我希望變量增加:1,2,3,4 ...但它始終保持爲1,因此每個圖像都有一個標籤1.如果我添加一個++,則將標籤2分配給全部。爲什麼??感謝您的回答

+1

哪裏定義了「a」? – Matthew

+0

見上面,由int a; – Alessandro

回答

2

這是假設a是一個簡單的類型。

首先,你不應該比較一個簡單的類型,像這樣;


if (a != nil){ 
    a = 0; 
} 

然而,如果上述聲明將總是第一個按鈕被按下後,因爲會> 0,因此不會計算爲NULL是真實的。所以你的if語句總是會重置爲零。如果您希望標籤增加刪除if語句。

假設a不是一個簡單的類型。

創建一個int並刪除if語句。下面是一些支持代碼。

 
@implementation ViewController{ 
    int a; 
} 
-(void)pressed{ 
    a = a + 1; 
    NSLog(@"%d",a); 
} 
- (void)viewDidLoad{ 
    [super viewDidLoad]; 
    a = 0; 
    UIButton * b = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    b.frame = CGRectMake(0, 0, 100, 50); 
    [b addTarget:self action:@selector(pressed) forControlEvents:UIControlEventTouchUpInside]; 
    [self.view addSubview:b]; 
} 
@end 

+0

謝謝,工作正常,除了NSLog(@「%d」,a);它不顯示任何東西。 – Alessandro

4

我假設aint或其他一些原始類型。原始類型將從來沒有nil(好吧所以是的,nil在技術上(void *)0,但不讓我們去那裏,你不應該使用nil原始類型。只有一個對象可以是nil。因此,

if (a != nil) 

總是除非a爲零,因此,a將被重新設置爲任意時間均爲零是真實的。

編輯:您還在方法調用的範圍內聲明瞭a,所以每次都會重新創建它。將其移動到合成屬性。

+0

所以我該怎麼辦? – Alessandro

+0

刪除if語句。 –

+2

'a!= 0'但是,你不應該在它的增量範圍內定義A,'int a;'將每次重置爲(void *)0。 (除非變量'a'的聲明僅用於澄清目的)。 –

0

nil等於0.所以在該方法的開始,如果a不是0,則將其設置爲0,然後對其進行增加。只要完全消滅零檢查,它應該工作。