- 실리콘이 도입되면, iPhone, iPad 앱을 네이티브로 돌릴 수 있다.
- 각 플랫폼은 독자적인 UI프레임워크를 가지고 있다.
- Mac Catalyst를 통해서 맥에서도 UIKit을 사용할 수 있게 되었다.
- 따라서 기반 칩이 동일하게 되면 기존 휴대용 기기용 앱도 맥에서 돌릴 수 있다.
- 호환 조건
- mac에서 빠지는 심볼/프레임워크가 없어야 한다.
- mac에서 빠지는 의존성 혹은 기능이 없어야 한다.
- Mac에 없는 하드웨어에 의존적인 기능을 사용하면 안된다.
- 하드웨어 차이
- 마우스 vs 터치
- 센서 유무 - 가속도 센서, 자이로스코프, 나침반, 뎁스 카메라, gps
- 물론 gps는 없어도 core location은 작동한다. 조금 부정확하지만
- 카메라 - mac은 추가 카메라를 연결할 수 있다.
// 카메라 전체를 직접 순회하지 않고도 자동으로 설정
AVCaptureDeviceDiscoverySession
- UI 차이
- 기본적으로는 자동적으로 호환됨
- 윈도우 리사이징이 되기 때문에, 좋은 경험을 위해서는 레이아웃을 최적화해줘야 한다.
- 멀티태스킹이 안되는 아이패드 앱이나, 모든 아이폰 앱은 리사이징이 불가능하다.
- 시스템 차이
- 파일 시스템 차이: 하드코딩을 했다면 문제가 될 수 있다.
- 디바이스 프로퍼티: 디바이스에 대한 가정을 했던 코드들은 문제가 된다.
- 앱스토어 관련 기능도 그대로 사용 가능
- 앱 씨닝도 맥용으로 동작
- ad-hoc도 큰 차이는 없다.
- 다만 테스트 플라이트는 지원하지 않는다.
- 모든 앱이 호환되는 것이 아니기에 주의해야 한다.
- 물론 엑스코드가 이걸 알려줄 것이다.
- 맥용으로도 테스트를 해보는 것이 좋다.