我有一個應用程序在32位平臺上工作,但在64位設備和模擬器上運行時會引發錯誤。有問題的代碼是:如何解決iOS 64位錯誤
if ([lastStatus isEqualToString:@"0"]){ //EXC_BAD_ACCESS
bRetVal = YES;
}
從我的H級文件:
@interface DPXmlHandler : NSObject <NSXMLParserDelegate> {
NSString *lastStatus;
NSString *msg;
NSMutableArray * locs;
NSMutableArray *alerts;
NSMutableArray *mrmMsgs;
}
@property (nonatomic, copy) NSString *lastStatus;
我合成lastStatus在我的.m文件的頂部。我使用XML文件中的值填充字符串。 - (無效)解析器:(的NSXMLParser *)解析器 didStartElement:(的NSString *)的ElementName 的namespaceURI:(的NSString *)的namespaceURI 的qualifiedName:(的NSString *)QNAME 屬性:(的NSDictionary *)attributeDict {
if ([elementName isEqual:@"status"]) {
//Get attribute value
@try{
lastStatus = [attributeDict valueForKey:@"code"];
msg = [attributeDict valueForKey:@"message"];
}@catch (NSException *e){
NSLog(@"Exception: %@", e);
msg = e.name;
}
該值是一個整數,但我無法理解爲什麼我不能存儲一個「0」字符串並將其與@「0」進行比較。我將不勝感激任何有關如何改變這一點的見解。 lastStatus的值大致爲-100至100.我可以使lastStatus爲int或long並使用==運算符,但我似乎無法找到任何指導原因,因爲這是一個問題。
我查了蘋果的guide on converting apps to 64 bit,但沒有提到NSString。
也許檢查'[attributeDict valueForKey:@「code」]'實際上是一個字符串,可能會發生一些奇怪的事情 – Fonix
讓我猜測,你不使用ARC。 –