我在头文件中设置NSString *oldChat
,如下所示:
@interface CTFChatViewController : UIViewController {
NSString *oldChat;
}
- (void)updateChat;
@property (nonatomic, retain) NSString *oldChat;
@end
然后我用它:
- (void)updateChat
{
NSString *chat = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://theshay.byethost7.com/chat.php"] encoding:NSUTF8StringEncoding error:nil];
if (![chat isEqual:oldChat])
{
[webView loadHTMLString:chat baseURL:nil];
oldChat = chat;
}
[self performSelectorInBackground:@selector(updateChat) withObject:nil];
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
NSString *chat = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://theshay.byethost7.com/chat.php"] encoding:NSUTF8StringEncoding error:nil];
oldChat = chat;
[webView loadHTMLString:chat baseURL:nil];
[self performSelectorInBackground:@selector(updateChat) withObject:nil];
}
应用程序因if (![chat isEqual:oldChat])
错误导致EXC_BAD_ACCESS
崩溃。
为什么它崩溃了?
(XCode 4.5.2,iPhone Simulator 6.0,Base SDK 6.0)
答案 0 :(得分:1)
oldChat是autorelease
个对象。保留它并使用isEqualToString进行字符串比较。
NSString *chat = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://theshay.byethost7.com/chat.php"] encoding:NSUTF8StringEncoding error:nil];
oldChat = chat;
[oldChat retain];
答案 1 :(得分:0)
您必须使用isEqualToString:方法检查您的NSString是否相等。你的代码应该是这样的
if (![chat isEqualToString:oldChat]){
//Do something
}