앱이 사용자 기본값의 배열에 마지막 몇 개의 PID를 저장하도록하기 위해 다음 updateLastPids 메소드를 작성했습니다. 나는거야 앱이 지난 5 개 실행 나에게 로그를 보낼 수이기 때문에 첫째, 충돌이 있었다 단지의 경우, 내가 5를 사용하고, 그런데
#define kMaxNumberOfPids 5 //should be integer greater than zero!
#define ENLastPidsUserDefault @"ENLastPidsUserDefault";
을 말하자면, 할 수 있는지 확인 마지막 실행보다 일찍 엉망이 된 결과; 원하는 경우 5 대 1로 변경할 수 있습니다. 나는 마지막의 PID에서 콘솔 로그를 얻기 위해 ASL 코코아 래퍼를 사용하는 방법을 보여줍니다 내 옆에 대답에서
- (void)updateLastPids
{
NSInteger currentPid = [[NSProcessInfo processInfo] processIdentifier];
NSNumber *currentPidNumber = [NSNumber numberWithInt:currentPid];
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *lastPidsArray = [[userDefaults arrayForKey:ENLastPidsUserDefault]
mutableCopy];
if (!lastPidsArray)
{
NSArray *newLastPidsArray = [NSArray arrayWithObject:currentPidNumber];
[userDefaults setObject:newLastPidsArray forKey:ENLastPidsUserDefault];
}
else
{
if ([lastPidsArray count] == kMaxNumberOfPids)
{
[lastPidsArray removeObjectAtIndex:0]; //get rid of the oldest PID
[lastPidsArray addObject:currentPidNumber];
NSAssert([lastPidsArray count] == kMaxNumberOfPids, @"invalid count");
}
//In case I decrease kMaxNumberOfPids later on. (Or some PITA user added
//stuff into the array by himself or herself!)
else if ([lastPidsArray count] > kMaxNumberOfPids)
{
[lastPidsArray removeObjectAtIndex:0];
while ([lastPidsArray count] >= kMaxNumberOfPids)
[lastPidsArray removeLastObject];
[lastPidsArray addObject:currentPidNumber];
NSAssert([lastPidsArray count] == kMaxNumberOfPids, @"invalid count");
}
else
{
[lastPidsArray addObject:currentPidNumber];
NSAssert([lastPidsArray count] <= kMaxNumberOfPids, @"invalid count");
}
[userDefaults setObject:lastPidsArray forKey:ENLastPidsUserDefault];
}
}
는 (PID를 이제 위의 방법을 실행 한 후 사용자 기본값에 있어야합니다).
좋아, Cocoa 래퍼는 나에게 잘 들린다. :) 그러나 내 경우에는 어떻게 사용하는지 보여주는 샘플 코드가 있습니까? 또한 PID와 일치하는 것이 좋습니다. 일반적으로 로그가 전송 될 때 앱이 다음에 실행될 때 이전에 오류가 발생했기 때문에 묻습니다. 연속적인 앱 실행시 PID가 바뀝니 까? – Enchilada
아니요, 샘플 코드가 없습니다. 내 블로그 게시물을 읽고 직장에서의 개념을 이해 한 다음 Dovey의 래퍼 헤더를 읽으십시오. 그가 준 API는 표준 ASL API와 거의 일치합니다. 그리고 예, PID는 연속적인 프로세스에서 다릅니다. 그래서 검색을 원하므로 마지막 프로세스의 결과 만 얻습니다. 마지막 PID를 사용자 기본값으로 저장할 수 있습니다. –
감사합니다. 대단히 감사합니다. 잘 작동하는 것 같습니다. 나중에 참조 할 수 있도록 필자는 필요한 코드를 어떻게 수행했는지 보여주기 위해 여기에 몇 가지 코드를 게시 할 것입니다. – Enchilada