한 리스트에 대해서
하나는 적용결과로,
하나는 변동가능한 보여주기용으로(앨범 선택) 사용해야한다.
이 두 리스트는 언제는 같으면서도 독립적으로 사용되어야 한다.
(앨범에서 사진을 선택하고 적용을 누르지 않고 앨범창을 닫은 다음
다시 앨범 선택버튼을 누르면
이전에 적용하지 않은 의미없는 선택된 이미지들 대신
그 이전에 적용했던, 결정되어있는 리스트를 보여주어야 한다.)
앨범에서 가져온 이미지 리스트를
적용결과 필드,
보여주기용 필드에 각각
넣는다고 해보자
List<Photo> imageList = [Photo(), Photo(), Photo()];
List<Photo> _photoList = List<Photo>(); //보여주기용
List<Photo> _prePhotoList = List<Photo>(); //적용결과용
대표적으로
1) = 으로 넣어주는 방법
2) addAll() 로 넣어주는 방법
이 있다.
하지만 대부분의 프로그래밍 언어에서 위의 방법으로 넣으면
copy by reference에 의해
처음의 imageList의 각 Photo 요소의 메모리가 할당되는 것이기 때문에
어느 하나의 리스트에서 요소가 변경되면
모든 리스트에서 해당 객체가 변경된다.
그렇다면 각 리스트가 독립적으로 사용될 수 없다.
그래서 copy by value(deep copy)방식으로 list를 복사하려면
직접 프로그래밍해야한다.
_prePhotoList.forEach((element) {
_photoList.add(new Photo(widget: element.widget, isSelected: element.isSelected));
});
반응형
'인포테인먼트 - development > etc' 카테고리의 다른 글
[MATLAB] MATLAB 반복문/조건문 (0) | 2021.08.15 |
---|---|
[MATLAB] MATLAB 함수 선언 (0) | 2021.08.15 |
[MATLAB] MATLAB 함수 기본 (0) | 2021.08.15 |
[MATLAB] MATLAB 행렬 기본 (0) | 2021.08.15 |
[etc] 카카오 "ip mismatched! callerIp=xxxxxxxx. check out registered ips." 에러 해결 (0) | 2020.05.27 |
댓글