다음 코드 조각이 있습니다.이 속성이있는 iVar가 유지되고 그 코드가 dealloc
메서드로 릴리스되었습니다. iVar는 2 가지 방법으로 사용되며 지속적으로 값을 변경하지만 값이 손상된 경우 가끔 사용합니다. 왜 그런가요?, 그것은 EXC_BAD_ACCESS와 코드Mememory Corruption in @property
[request addPostValue:_idLastMessageFromServer forKey:CONSTANT_XXX];
이 줄을 충돌 : 루프 방법을 업데이 트를 호출 할 때
@interface ChatController : NSObject <ASIHTTPRequestDelegate>{
NSTimer *timer;
NSString *_idLastMessageFromServer;
}
@property(nonatomic, retain)NSString *idLastMessageFromServer;
@end
하는 .m
@implementation ChatController
@synthesize idLastMessageFromServer = _idLastMessageFromServer;
- (void)initLoopTimer{
timer = [NSTimer timerWithTimeInterval:5 target:self selector:@selector(update:) userInfo:nil repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];
}
- (void)update:(id)sender{
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:CONSTANT_YYYY];
[request setDelegate:self];
[request addPostValue:_idLastMessageFromServer forKey:CONSTANT_XXX];
[request setDidFinishSelector:@selector(requestUpdateFinish:)];
[request startAsynchronous];
}
- (void)requestUpdateFinish:(ASIHTTPRequest *)request{
NSString *response = [request responseString];
if(response && response.length){
if(![response isEqualToString:CHAT_RESPONSE_NO_MESSAGES]){
NSArray *array = [response componentsSeparatedByString:CHAT_PARSE_RESPONSE];
if(array && [array count] == 2){
**_idLastMessageFromServer = [array objectAtIndex:0];**
}
}
}
}
그러나이 .H
메시지,하지만 왜?
사람들이 메모리 손상을 검색 할 때 도움이되도록 제목의 철자를 수정해야합니다. – Cthutu
감사합니다 @ Jacky Boy – NTTake