강의를 들으면 공부하는 시스템의 유래(?)를 설명해 주는것이 너무 좋다.
이런 기능이 있는데 이게 왜 나왔냐면 블라블라~
사실 이것은 실무를 하는데 굉장히 중요한 내용이다.
고객에게 왜 안되는지, 내가 실력이 없어서가 아니라 루트(Root)단에서 막아버린거라 어쩔 수 없다는 이야기는 결과적으로 정확한 지식과 증거가 있어야 한다.
참고로 얼마전 안드로이드 앱을 개발하는데 동영상 녹화 파일이 4GB를 넘어버리면 녹화가 중지되는 이슈가 있었다. 고객사에서는 1차적으로 해당 이슈를 해결하길 바랬고, 해결할 수 없는 문제라면 해결 할 수 없는 이유를 알려달라고 했다.
원인은 안드로이드는 Local Memory가 FAT32 파일시스템이며, FAT32는 4GB 이상의 파일을 저장 할 수 없는 파일 시스템이다.
따라서 이 문제를 해결하려면 별도의 SD카드를 exFAT 로 파일포맷 하여 사용하거나 기존 안드로이드 파일시스템을 exFAT로 변경 해야 하는데 기존 안드로이드 파일시스템을 변경하는 것은 너무 리스크가 컸다.
결국 이 이슈는 우리가 이러한 팩트기반의 증명(?)을 하여 넘어갔다.
사실 이러한 지식은 개발자들도 많이 알지 못하는 지식이고, 결국 관련된 개발을 하면서 알게되는 지식이라고 생각한다.
사설이 길었는데 결국 내가 말하고 싶은건 단순히 코딩스킬이나 메소드 한 두개 더 알아도
이런 지식이 없으면 개고생 한다는 것이다. ( 경험담 ㅠ )
강의를 통해 알게된 내용으로는 iOS는 Sandbox 형태로 앱을 관리한다.
iOS의 보안
iOS는 상대적으로 보안이 뛰어난 OS임이 분명하다.
이는 무분별한 백그라운드 서비스(Background Service)를 제한하였고, Sandbox를 적용했기 때문이다.
Sandbox?
Sandbox는 어떠한 폴더인데, 이 폴더의 특징은 자신이 루트 디렉토리(Root Directory)라고 인식한다.
즉 상위 프로그램, 디렉토리의 존재는 모른다. 루트이기 때문에.
이제약은 생각보다 많은 불편함을 주는데, 앱을 개발하면서 연락처나 사진 등 사용자의 정보를 참고(?) 해야 하는 경우가 많다. 하지만 Sandbox안에 있는 앱은 직접적인 접근이 불가능 한 것이다.
이런 강력한 제약으로 보안성을 높아졌으나 활용도는 떨어졌다.
그래서 Apple에서는 이런 제약사항( 직접 접근 )을 유지하면서 활용도를 높이기 위해 API를 만들었다.
AddressBook 이라는 API를 이용하면 사용자의 전화번호부에 접근 할 수 있도록 만들었다.
Asset Library를 이용하면 사용자의 사진에 접근 할 수 있다.
사실 이러한 이론을 공부하지 않아도 훌륭한 앱을 개발 할 수 있다.
앱개발 하는데 연락처를 사용해야 되는 상황이 나오면 구글에 'iOS 연락처 사용' 이라고만 쳐도 몇백개의 글이 나올 것이다. ( 영어로 치면 더 많이 나오겠지.. )
그러나 이러한 이론은 Apple이 왜 보안적으로 뛰어나며 어떠한 과정을 거쳐 개발자들에게 편의성을 제공해 주었는지에 대한 역사(?) 이고, 나는 그런것에 관심이 많으니까... ㅋㅋ;;
재밌다.
이미지 출처 : 프로그래머스 iOS Swift입문 강좌 내용에서 가져옴.
'Develop > iOS' 카테고리의 다른 글
Swift 옵셔널(Optional) (0) | 2019.05.08 |
---|---|
Swift 반복문 (0) | 2019.05.08 |
Swift Swift의 Switch (0) | 2019.05.08 |
Background Service 제약 (0) | 2019.05.04 |
Xcode 사용법 (0) | 2019.05.03 |