문제
그렇게 오류도 다 잡고, 기능도 추가해서 디버그모드에서 다 잘 동작하는 것을 확인했는데
이번에는 디버깅을 끄자 release모드에서 앱이 작동을 하지 않았다...
logcat을 이용해서 디버깅을 해 본 결과 아래와 같이 undifined가 넘어갔다.
범인은 바로 아래의 코드이다.
콘솔에 찍어본 결과 asyncstorage에서 저장했던 imageArr을 불러오는 것 까지는 문제가 없었으나
그 밑에 array를 set으로 형변환한 결과인 savedImageSet이 {} 로 출력되었다.
디버그 모드에서는 문제 없었는데, 왜 release 모드로 실행하면 안되는지 의문이다..
// 캡쳐사진 저장 여부 확인
export const checkNewImages = async images => {
const imageArr = await AsyncStorage.getItem('imageArr');
const savedImageSet = new Set(JSON.parse(imageArr));
console.log('savedImageSet : ', savedImageSet);
const newImages = new Array();
images.forEach(image => {
if (!savedImageSet.has(image.name)) {
newImages.push(image);
}
});
return newImages;
};
삽질
열심히 구글링 해서 debug와 release 버전의 컴파일 차이에 관한 내용을 찾았다.
debug <=> release 모드의 차이점과 배포 (tistory.com)
메모리에서 문제가 생겼나..?
코드를 map을 이용한 코드로도 바꾸어보았지만 똑같이 안됐다.
그렇게 몇시간 동안 이렇게 저렇게 바꾸어봤는데 다 안됐다.
해결
그러다가 충격적인 사실을 알았다. set 자료형은 console에 {}로 출력된다는것! set을 console로 보고 싶으면 array로 변환해서 로그에 찍어야 한다...
그렇게 바로 바꾸어 출력해 보았는데 ... 지금까지 안되고 있는 줄 알았던 set 변환이 아주 잘 되고 있었다는 사실을 알게 되었다ㅜㅜ 피같은 시험기간에 왜 여기다 시간을 쓴건지..
그럼 여기서 또 의문인게 지금까지 set에서 잘 되고 있었다면 왜 release모드에서 동작을 안한걸까?
위의 오류를 다시 보면 undefined로 생긴 오류였고, set에서 {}로 출력되길래 당연히 이게 문제인 줄 알았다.
그런데 이유를 찾는 동안 막아놓았던 코드를 풀자 거짓말처럼 release에서도 작동이 잘 된다...
아래의 코드가 작동이 잘 되는 코드이다. 위의 코드와 비교해 봤을 때 다른 점은 JSON.parse를 윗줄로 옮겼다는것!
혹시 이게 문제였나? 싶어서 이전 코드로 다시 돌려봤는데 여전히 실행이 아주 잘된다..ㅎㅎ
아까는 왜 안된건지 역시 알 수 없는 코딩의 세계
// 캡쳐사진 저장 여부 확인
export const checkNewImages = async images => {
const imageArr = JSON.parse(await AsyncStorage.getItem('imageArr'));
const savedImageSet = new Set(imageArr);
console.log('savedImageSet : ', Array.from(savedImageSet));
const newImages = new Array();
images.forEach(image => {
if (!savedImageSet.has(image.name)) {
newImages.push(image);
}
});
return newImages;
};
끝!
그렇게 얻은 것도 없이 삽질만 한 후기 끝!
'코딩일지' 카테고리의 다른 글
[2023-06-12] 키보드에 따라 사진이 같이 올라가는 문제 해결 (1) | 2023.06.12 |
---|---|
[2023-06-11] 이미지태거 첫 실행시 에러해결 (0) | 2023.06.12 |
[2023-06-06] 이미지태거 오류 수정 (0) | 2023.06.06 |
[2023-06-06] 이미지태거 리팩토링 - 크기가 큰 배열 나누어서 전송하기 (0) | 2023.06.06 |
[2023-06-05] 보낸 이미지 저장해서 같은 이미지 전송되지 않도록 하기 (0) | 2023.06.05 |