2010-06-13 52 views
7

Tôi chỉ đang học Cocoa (đến từ C#) và tôi nhận được một lỗi lạ cho một cái gì đó có vẻ thực sự đơn giản. (charsSinceLastUpdate >= 36)So sánh giữa con trỏ và số nguyên

#import "CSMainController.h" 

@implementation CSMainController 
//global vars 
int *charsSinceLastUpdate = 0; 
NSString *myString = @"Hello world"; 
// 

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 
... 
} 

//other functions 
- (void)textDidChange:(NSNotification *)aNotification { 
    NSLog(@"charsSinceLastUpdate=%i",charsSinceLastUpdate); 
    if (charsSinceLastUpdate>=36) { // <- THIS line returns the error: Comparison between pointer and integer 
     charsSinceLastUpdate=0; 
     [statusText setStringValue:@"Will save now!"]; 
    } else { 
     charsSinceLastUpdate++; 
     [statusText setStringValue:@"Not saving"]; 
    } 

} 

//my functions 
- (void)showNetworkErrorAlert:(BOOL)showContinueWithoutSavingOption { 
... 
} 
// 

@end 

Mọi trợ giúp sẽ được đánh giá cao, cảm ơn!

Trả lời

20

Trong code của bạn, charsSinceLastUpdate là một con trỏ , bạn cần xác định nó mà không các *:

int charsSinceLastUpdate = 0;

Trừ khi, tất nhiên, bạn nghĩa để xác định nó như một con trỏ , trong trường hợp đó, bạn cần phải sử dụng dereference operator để truy xuất giá trị mà nó trỏ đến, như vậy:

if(*charsSinceLastUpdate >= 36) { 
    //... 
} 
+0

Cảm ơn, tôi nghĩ rằng * chỉ là một quy ước đặt tên phổ biến –

Các vấn đề liên quan