ClintJang / ios-swift-objc-questions-and-answers翻译 / 编辑

最近提交:1天前
创建时间:2018.09.01

语言构成

Swift100.0%

README

iOS(Swift, Objc) 질문과 답변 모음

소개

iOS (swift, objc)개발을 하면서 알게된 질문과 답변 내용을 모아보았습니다. 개발 언어는 공부를 하면 빠르게 익힐 수 있지만, 개발 경험은 물어보고 정보를 얻기가 쉽지 않습니다. 도움이 될 수 있도록 정리를 꼼꼼히 해보겠습니다.

잘못 작성된 정보는 열심히 수정 하겠습니다. 언제든지 문제가 있으면, 편하게 수정해주세요.

지금은 작성을 시작해서 내용이 적지만, 알차게 계속 업데이트 하겠습니다.
디테일한 지식 보다는 iOS 개발을 하면서 이정도는 알고 있으면 좋은...
정도의 질문과 답변 형식으로 정리 하려고 합니다.

목차


질문과 답변

1. 개발입문

Swift 공부할 때 보면 좋은 책은 어떤 것이 있을 까요?

  • 개인적으로 바이블과 스토리진행을 따라해보는 2가지가 있을 것 같은데요.
    • 바이블 쪽이면 : 스위프트 프로그래밍: Swift4 객체지향, 함수형, 프로토콜 지향 패러다임까지 한 번에! 2판 을 검색해보시면 좋은 것 같습니다.
    • 스토리 진행이면 : 꼼꼼한재은씨의 스위프트 실전편, Do it! 스위프트로 아이폰 앱 만들기 (입문) [개정 2판] 이 좋다는 말은 들었었고, 요즘에는 다양한 책들이 있는 것 같습니다. 알게 되는 책들이 있으면 업데이트 하겠습니다.

Swift 개발을 처음 시작할 때 공부하기 좋은 링크 가 있을 까요?

Objective C 공부할 좋은 방법이 있나요?

  • 아론 힐리가스의 오브젝티브-C 프로그래밍 책을 검색해 보세요, 국내에서는 이정도가 좋은 것 같습니다.
  • 오브젝티브-C 한국어 동영상강좌는 T아카데미 Objective C 강좌 정도 인 것 같습니다.

처음 개발에 입문 했는 데, 좋은 커뮤니티가 있을까요?


Top으로 가기



2. AppStore

애플 개발자 전화 지원은 몇번인가요? 전화가 가능한가요?

  • 제가 알기로는 080-860-9797 입니다. 참고한 링크, 현재는 공식적으로는 온라인으로 요청하면 전화 연결을 해준다고 합니다. 아래 전화 지원 링크를 눌러서 진행해 보세요.

  • 애플 전 세계 전화지원 링크 : 온라인으로 요청하세요.

     전 세계 전화 지원
     
     등록 및 멤버십, 앱 제출 및 관리, 분석 등 일부 주제에 대해서는 
     Apple Developer 전화 지원이 전 세계에서 제공됩니다. 
     지원 전화를 받으시려면 온라인에서 요청하십시오. 
     전문가와 연결해 드리겠습니다.
    

AppStore에 검수 신청하면 얼마나 걸리나요?

  • App review Times : 현재 검수 시간이 평균적으로 얼마나 걸리는 지 정보를 제공해줘서 대략적인 판단을 할 수 있게 해주는 사이트 입니다.
  • 보통 케바케라서 정확하지 않습니다. 평균적인 시간보다 오래 걸린다면, 검수 진행에 대해 문의를 진행해 해보시면 될 것 같습니다.

앱스토어를 등록하기 전에 UUID(디바이스) 등록 안된 분들이 테스트 해볼려면 어떻게 해야될 까요?

  1. 개인 및 법인 계정이라면 : Apple TestFlight 가 있습니다.
    • 구글에서 "TestFlight 사용법" 으로 검색을 해보셔요.
  2. 기업(Enterprice) 계정이라면 : 디바이스 등록없이 기업내 배포가 가능합니다. 단, 자사 외의 다른 목적으로 배포시 계정이 블락 될 수 있습니다. (알고 계시는 분들이 애플에 신고도 가능할 수 있어요~)

정말 급하게 앱스토어에 등록해야되는 데.. 어떻게 해야될 까요?

  • 긴급 리뷰 요청이 있습니다. 정말 긴급할 때만 사용하세요..

  • "appstore 긴급 리뷰 요청" 정도로 구글에 검색하면 방법을 알 수 있습니다.

     빠른 앱 심사
    
     참작이 가능한 상황에 직면하는 경우 빠른 앱 심사를 요청할 수 있습니다. 
     이러한 상황으로는 App Store에 있는 앱의 심각한 버그를 수정하거나 직접 관련된 이벤트와 동시에 앱을 출시해야 하는 경우 등이 해당됩니다.
    

검수통과해서 "판매 준비됨"으로 바뀌었는 데, 왜? iOS 앱스토어에서 검색하면 나타나지 않을까요?

  • 개인적인 경험으로 볼 때, 케바케 인 것 같습니다. 1시간도 안되서 나타난적도 있고, 몇시간이 지났는 데, 어떤 단말에서는 나타나지 않은 경우도 있었습니다. 24시간 안에는 모두 나타나는 것 같습니다.

  • 앱스토어 심사지침 의 내용 중에 "출시일"로 검색해보세요. 앱이 나타나려면 최대 24시간이 걸릴 수 있다고 합니다.

     출시일:  .. (중략) .. 
     또한 선택한 모든 지역의 App Store에 앱이 나타나려면 
     최대 24시간이 소요될 수 있음에 유의하십시오.
    

appstore에서 앱 다운로드 할때 단말별로 앱사이즈가 다른가요?? 이미지 해상도라던지.. 차이때문에, 만약에 다르다면 영향 받는 부분이 어디일까요?

  • App Thinning으로 검색해보시면 나옵니다. Bitcode, On-Demand Resources (ODRs), Slicing 차이로 있습니다.
  • 참고한 링크

미성년자는 애플 개발자 등록이 가능한가요?

  • 가능하지 않습니다.
  • 법적인 이유로 만 18세 미만의 청소년은 개발자 프로그램을 신청할 때에 동의해야 하는 동의서에 동의를 할 수 있는 효력을 지니지 못하기 때문에 가능하지 않습니다.

개인개발자도 앱 등록시 개인정보 취급방침 URL을 반드시 추가해야되나요?

  • 구글에서 'AppStore용 프라이버시 정책' 으로 검색해 보세요.

  • 2018년 10월 3일부터 Appstore에서 새로운 앱 및 앱 업데이트를 위한 앱 제출시 개인 정보 취급 방침을 요구하도록 바뀌었습니다.

  • 앱스토어 심사지침 의 5.1.1 내용을 확인해보세요.

     5.1.1 데이터 수집 및 보관
     (i) 개인정보 취급방침: 모든 앱에는 App Store Connect 메타데이터 영역과 앱 내부에 쉽게 볼 수 있는 개인정보 취급방침 관련 링크가 포함되어야 합니다. 개인정보 취급방침은 분명하고 명시적으로 다음 요건을 준수해야 합니다.
     앱과 서비스가 수집하는 대상 정보(있는 경우), 정보 수집 방법, 수집한 정보의 사용 목적을 정의해야 합니다.
    
  • 심사지침 팁에 쉽게 작성하는법이 적혀있습니다.


Top으로 가기



3. Xcode

Xcode에서 자동완성이 안될 때는?

  • Xcode clean, Xcode 재 실행
  • 재부팅
  • derivedData 를 제거해보기
    • xcode deriveddata clean 정도로 구글 검색해보셔요.

Xcode 10으로 올리고 나서 빌드 에러가 났는 데, 어떻게 하죠? 과거로 돌아갈 수 있나요?

  • 이전 버전을 다운받을 수 있습니다.

  • Xcode 10은 새로운 빌드 시스템을 사용합니다. 새로운 빌드 시스템은 향상된 안정성과 빌드 성능을 제공하며 레거시 빌드 시스템에서는 볼 수 없는 프로젝트 구성 문제를 포착합니다. 만약 문제가 있다면 이전 빌드시스템을 사용할 수 있습니다.

    • File > Project/Workspace Settings
    Xcode 10 기본 이전 빌드시스템(1/2) 이전 빌드시스템(2/2)

작업 중인 현재 프로젝트 폴더 위치로 이동된 터미널을 띄우고 싶은 데, 혹시 Xcode 에서 가능한 방법이 있나요?

  • 이미지 처럼 이렇게 설정하는 방법이 있습니다.


Top으로 가기



4. 시뮬레이터

시뮬레이터 재설정 하는 방법은?

  1. 시뮬레이터 실행 후 왼쪽 상단 메뉴에서 중에서
Choose Hardware -> Erase All Content and Settings..  
  1. 팝업에서 Erase 를 선택하시면됩니다.

Mac에서 복사한 텍스트(클립보드)를 시뮬레이터에 붙여넣기가 안되는 데, 가능한 방법이 있나요?

  1. 시뮬레이터 실행 후 왼쪽 상단 메뉴에서 중에서 Automatically Sync Pasteboard을 선택하시면 됩니다.
Choose Edit -> Automatically Sync Pasteboard to turn on and turn off  
  • simulator help topics 링크를 참고해보세요.
  • 가끔 잘 안되면.. 체크를 해제했다가 체크했다가 복사 몇번 해보시면 되실 거에요.😭

시뮬레이터라고 하는 데, 애뮬레이터와 차이가 무엇인가요?

  • 둘 다 실제 하드웨어를 사용할 필요없이 앱(어플리케이션)을 테스트 하기 위한 목적을 가지고 있습니다.
  • 안드로이드 개발할 때, 에뮬레이터 (emulator) 를 사용하지요.
  • 에뮬레이터는 아키텍쳐를 재현하여 만듭니다. 현재 시스템 안에 다른 시스템을 완벽히 재현한 것이지요. 안드로이드 에뮬레이터는 arm용과 x86용 등등을 따로 만들수 있고 비교적 무겁고 느립니다.
  • 에뮬레이터는 실제 기기와 유사한 테스트가 가능합니다.
  • 에뮬레이터가 완벽한 구현이라면 시뮬레이터는 부분적인 구현입니다.
  • 시뮬레이터(simulator)는 대상 시스템을 추상화 하여 실제환경에 가깝고 유사하게 동작하도록 테스트 환경을 만들어 줍니다. 속도가 빠르지요.
  • 시뮬레이터는 기존의 플랫폼에서 동작만 재현합니다. 예를 들면, iOS 디바이스는 arm64에서 시뮬레이터는 x86_64에서 돌아가요.
  • '시뮬레이터 애뮬레이터' 정도로만 검색해도 내용이 많이 나옵니다.

Top으로 가기



5. Reject

  1. 기본적인 검수 진행은 진행되는 사항 중 중요한 정보들은 메일로 받아져 있을 것 입니다. 메일함을 우선 확인해 봅시다 😁
  2. 검수자에 따라 케바케로 검수결과가 달라질 수 있습니다. 항상 통과되던 앱이 이번에 왜 리젝된거지? 하고 당황하지 말고 리젝 내용을 확인해보세요.
  3. App Store 심사 지침 가이드 라인은 계속 변합니다. 아래 내용도 시간이 지나면 달라질 수 있습니다.

로그인을 하기위해 정보(전호번호등..)가 필요하다고 리젝 당했습니다. 😭

  • 데모계정(앱을 잘 볼수 있는 계정, 아이디와 패스워드등)을 제공하여 검수자가 로그인을 진행할 수 있게 하면 됩니다. 혹은 그 해당 메일에서 받은 내용을 디테일하게 대응하셔도 됩니다. 로그인 관련 부분이라면 데모계정을 제공하면 문제가 생기지 않을 것입니다.

쇼셜(SNS) 로그인만 있으면 리젝 당하나요?

  • 소셜 기능이 전혀 없는데 소셜로그인을 강요하면 (대안이 없으면) 리젝당합니다. 예를들면 페이스북 관련 기능이 필수로 있는게 아니면 리젝 입니다.
  • 저는 오래됬지만, 비회원으로 앱을 이용할 수 있는 기능을 추가했습니다. 필요한 기능의 경우에 로그인 해서 이용하도록 하니 통과 되었었던 기억이 있습니다.

비디오에 대한 링크를 제공하라는 데? 무슨 의미일까요?

  • 데모비디오를 제공하라는 이야기입니다. 리뷰어에 따라 다르지만, 구동하는 부분을 앱 실행해서는 확인 할 수 없다 판단되면 연동되는 실행되는 동영상을 찍어서 리뷰어가 확인 할 수 있게 해주면 됩니다.
  • 예를 들어, 시연하는 동영상을 찍고, 그것을 유투브에 업로드하고 링크제공하면 되겟죠.

웹뷰로만 된 앱은 리젝인가요?

  • 웹만 있는 기능을 단순한게 웹뷰로 감싸서 앱으로 올린 앱은 리젝을 당할 가능성이 매우 높다고 생각됩니다. 리뷰어가 판단하기에 앱의 기능이 하나라도 있어서 앱으로 만들어 올렸다 라는 차이점을 주어야 될 것 같습니다.
  • 예를 들어 화면 비중을 일부라도 네이티브로 한다던지..
  • 예를 들어 푸시 기능을 추가한다던지..
  • 리뷰어에게 설명할 수 있는 네이티브 기능이 있어야 할 것 입니다.

페이지 한개 짜리 앱이 리젝 사유인가요?

  • 리뷰어에 따라 다릅니다. 중요한게 수준미달이라 판단되도 리젝 당할 수 있습니다. 작동하지 않거나 수준 미달의 경험을 제공하는 앱은 언제든지 App Store에서 삭제될 수 있습니다.

앱내 공지사항에 안드 출시소식 있다구 리젝 당하나요?

  • 리뷰어 판단이지만, 안드로이드 정보가 iOS앱에 표시되고있다면 리젝될 수 있다는 이야기를 많이 들은 것 같습니다. 문제가 될 소지를 줄이세요.
  • 앱 스샷에 안드로이드 이미지를 넣어도 리젝될 수 있습니다.
  • 이벤트때 아이패드 준다 이런것도 리젝 될 수 있습니다.
  • 리젝사유를 읽어보시고 거기에 해당하는 조치를 취하시면 됩니다. 대화로 풀 수 있느건 대화로 풀면 됩니다.

강제 종료 함수를 사용하면 리젝 당하나요?

  • 의도하지 않는 강제 종료함수 사용은 리젝 대상이긴 합니다.
  • 안정성이 확보되지 않아 에러가 나서 앱이 강종된 것인지, 사유가 명확해서 이런 상황에서 이용못하게 하기 위해, 고객에게 알려주고 exit(0) 처리를 하였다면 리젝되지 않을 것입니다. (의도된 것이라면 OK)

아이폰X 대응 안하면 리젝인가요?

  • 애플 공지 링크를 클릭해 보면 2018년 7월(Starting July 2018)부터 대응이 되어야 된다고 합니다. 이제부터는 당연히 대응된 앱이 아니라면 리젝사유입니다.

컨텐츠결제 부분을 xxx페이나 신용카드결제로 하면 리젝 사유인가요?

  • 실물결제 는 리젝 사유가 아닙니다. 실물결제가 아니면 리젝입니다.

우리 앱은 iPhone만 지원하고 iPad를 지원안하는 데, iPad에서 실행했을 때 더이상 진행할 수 없다고 사진과 합께 리젝 내용을 받았습니다. 😭

  • 리뷰어는 아이패드를 쓰기 때문에 아이폰이 아닐수도 있습니다.
  • 아이폰 용 앱이라도 아이패드에서 실행가능 합니다.
  • 보통 iPhone은 대부분(iPhoneX를 제외) 9:16 비율의 해상도 입니다.
  • 옛날 iPad에서 지금 iPhone용 앱을 실행하면 3:4 비율입니다. 그래서 하단 부분에 버튼을 만드신 것이 안나오거나 UX/UI가 이상하게 나올 수 있습니다. 최소한 iPad에서 버튼을 누를 수 있는 정도의 UI는 리뷰어와 대화가 가능하겠죠.

자체로그인 없이 소셜로그인만 붙이려고 하는데, 애플 리젝사유인가요?

  • 소셜로그인만 있으면 리젝사유가 아니라 소셜로그인을 이용한 이유가 있어야 합니다.

  • 페이스북 로그인을 한다면 페이스북에 공유하는 기능이 있다던지 그 특정 소셜로그인을 해야하는 이유가 있어야합니다

  • 가이드라인 5.1.1.v 를 찾아보세요

    • "앱의 핵심 기능이 특정 소셜 네트워크(예: Facebook, WeChat, Weibo, Twitter 등)와 관련이 없다면 로그인이나 다른 비슷한 메커니즘을 거치지 않고 바로 기능을 사용할 수 있도록 해야 합니다."
     5.1 개인 정보 보호
     5.1.1 데이터 수집 및 보관
     
     (v) 계정 로그인: 계정이 반드시 필요한 주요 기능이 포함되지 않은 앱인 경우에는 로그인하지 않아도 사용할 수 있도록 해야 합니다. 
     앱의 핵심 기능과 직접적으로 관련이 있거나 법적으로 필요한 경우가 아니라면, 앱을 작동하는 데 사용자 개인 정보를 입력하도록 요구하지 않아야 합니다. 
     앱의 핵심 기능이 특정 소셜 네트워크(예: Facebook, WeChat, Weibo, Twitter 등)와 관련이 없다면 로그인이나 다른 비슷한 메커니즘을 거치지 않고 바로 기능을 사용할 수 있도록 해야 합니다. 
     기본 프로필 정보를 가져오거나 소셜 네트워크에 공유하거나 앱을 사용하도록 친구를 초대하는 행위는 앱의 핵심 기능에 해당하지 않습니다. 
     앱은 앱 내에서 소셜 네트워크 자격 증명을 철회하거나 앱과 소셜 네트워크 간 데이터 접근을 비활성화하는 메커니즘을 포함해야 합니다. 
     앱은 자격 증명이나 토큰을 기기 밖 소셜 네트워크에 저장해서는 안 되며, 
     앱을 사용하는 동안 앱에서 소셜 네트워크에 직접 연결하려는 목적으로만 자격 증명이나 토큰을 사용해야 합니다.
    

Top으로 가기



6. 라이브러리 사용

라이브러리 사용을 하려면 어떻게 해야 되나요?

  • Cocoapods를 추천드립니다.
  • Carthage(카르타고) 라는 비슷한 방식도 있습니다. 워크스페이스를 만드는 방식이 아닌 Embbed Framework를 이용하는 방식이죠.

라이브러리들 모아놓은 좋은 블로그니 링크가 있나요?

  • awesome-ios : 저는 처음에 여기 링크를 보고 사용했었습니다.
  • MotionBook 앱을 받아보셔도 좋고..
  • cocoacontrols : 여기서 키워드 검색을 해보세요. 예를 들어 테이블 뷰의 헤더 커스텀이 필요하면 .. 'header'로 검색을 ~
  • 전 이정도로 찾아보거나 보통은 키워드로 구글 검색을 해봅니다. 당연히 커뮤니티나 지인에게 물어보기도 하구요~.

Top으로 가기



7. 디자인

당연히 iOS 개발과 관련된 디자인 내용입니다.

안드로이드는 UI 개발 중 크기 선택은 dp로 작업하는 데 iOS에서는 dp를 지원하나요? 현업에서는 보통 디자이너에게 요구할때 어떻게 요구를 하나요?

  • iOS에서는 dp를 사용하지 않습니다. point라는 개념을 사용합니다.
  • 제드님의 블러그 링크를 들어가 보세요. 제일 설명이 잘 되어있는 것 같습니다.
  • 제플린 이라는 협업 툴로 개발을 많이 합니다. iOS용으로 제공받으면 편하게 개발 하실 수 있습니다.
  • 유지보수 관점에서 디자이너 분들과 협의하면 좋은 결과를 도출 할 수 있을 것입니다. 파이팅!

앱 디자인 툴로는 스케치가 대세인가요?

  • 스케치(sketch)를 많이 사용하는 것으로 알고 있습니다.
  • 스케치를 이용해서 디자인하고 디자인 가이드의 공유는 제플린(zeplin) 으로 하죠.
  • 요즘은 Adobe XD로 넘어가는 추세라는 말도 들어봤습니다.
  • 어도비 엑스디의 장점으로 포토샵이나 일러에서 작업한 걸 스케치 같은 경우는 가져오기가 불편한 데, 엑스디는 복붙으로 가져올 수 있는 것 같습니다.
  • 애플에서 제공하는 리소스들도 엑스디가 지원한다 하구요.
  • 더불어 엑스디는 어도비와 같은? 단축키를 사용해서, 어도비의 단축키에 익숙하신 상태라면 러닝커브도 적을 것입니다.
  • 검색해 주세요. 😁

Top으로 가기



8. Apple 개발: UIKit

멀티 터치 는 최대 갯수가 5개 인가요?

  • iPhone 류에서는 5개 입니다.
  • iPad 류에서는 11개 입니다.

상태바를 히든 시키거나 나타내고 싶은 데, 어떻게 해야되나요?

  • statusBarHidden 인스턴스 프로퍼티는 9.0에서 Deprecated 되었습니다.
  • 앱 시작시에(런치시) info.plist에서 숨길지 여부를 설정할 수 있고..
    • Status bar style : UIStatusBarStyle
    • Status bar is initially hidden : NO/YES
    • View controller-based status bar appearance :NO
  • UIViewController에서 prefersStatusBarHidden 처리를 해서 보여줄 지 여부를 설정할 수 있습니다.
  • 더불어 필요시 변경시키고 싶다면 setNeedsStatusBarAppearanceUpdate 를 호출해 주면, 변경이 될 것 입니다.

App-Prefs:root 와 Prefs:root 는 어떻게 사용하는 것인가요? 사용 가능한가요?

  • 이제 설정에서 자기 앱의 설정말고 다른 건 못 엽니다. (iOS 11 부터로 알고 있습니다.)

  • UIApplicationOpenSettingsURLString 를 이용하시면 됩니다.

  • 이제 리젝 됩니다. 사유는.. : review guidelines 2.5 Software Requirements 의 2.5.1. 의 내용을 보면 애플에서 제공하는 공식적인 최신 API를 사용하라고 합니다.

     2.5.1 앱은 공용 API만 사용할 수 있으며 현재 판매되는 OS에서 실행되어야 합니다. 
     공용 API(영문)에 대한 자세한 내용을 확인하십시오. 
     앱을 최신 상태로 유지하고 OS의 다음 버전에서 더 이상 지원하지 않아 사용할 수 없는 기능, 프레임워크 또는 기술을 단계적으로 삭제하십시오. 
     앱은 원래 목적에 맞는 프레임워크와 API를 사용해야 하고 앱 설명에 이와 관련된 내용을 기재해야 합니다. 
     예를 들어 HomeKit 프레임워크의 경우 홈 자동화 서비스를 제공해야 하고, HealthKit의 경우 건강 및 피트니스 목적으로 사용되어야 하며, 건강 앱과 연동되어야 합니다.
    
  • iOS 10 에서는 App-Prefs?, iOS 10 미만에서는 Prefs? 는 조건을 걸면 가능할 것입니다. 하지만 사용자도 희소하고, 당연히 리젝 되리라 생각됩니다. (가물가물하네요. 구지.. 하위버전에서 꼬옥�? 사용하시려면 검색 부탁드립니다.)

  • 참고 링크 01 : 리젝된 경험 링크

  • 다른 참고 예시 글 01

     ... (중략) ...
     
     Your app uses the "prefs:root=" non-public URL scheme, 
     which is a private entity. 
     The use of non-public APIs is not permitted on the App Store 
     because it can lead to a poor user experience should these APIs change.
     
     Continuing to use or conceal non-public APIs 
     in future submissions of this app may result in the termination of your Apple Developer account,
      as well as removal of all associated apps from the App Store.
     
     ... (중략) ...
     
    

화면을 수동으로 갱신시키려고 하는 데, 어떻게 해야될까요? 원하는 시점에 변경된 값이 정확하게 반영된 화면을 표현하고 싶습니다.

  • setNeedsLayoutlayoutIfNeeded 를 검색해 보세요. 추가적으로 layoutSubviews 키워드도 같이 검색해보면 좋습니다.
  • Runloop, 실행 루프 라고 하지요. 실행 루프 안에서 터치나 여러 이벤트가 발생하면 거기에 따라 시스템 상황에 맞게 화면을 업데이트 합니다. 이런 업데이트 사이클에 맞춰서 화면을 갱신 시키는 시점에 setNeedsLayout 가 호출되어있었다면 해당 시점에 화면을 갱신 할 것입니다. setNeedsLayout 를 사용했다면, 비동기적이며, 시스템에 효율적인 갱신 방법입니다. 단, 우리가 정확히 업데이트 시점을 컨트롤 할 수는 없을 것 입니다.
  • 즉각적으로 사용하고 싶다면 layoutIfNeeded 를 사용합니다. 강제적이고 즉시 업데이트가 가능하죠.

Top으로 가기



9. Apple 개발: Foundation

date는 string으로 변경안하면 무조건 9시간 차이가 나나요?

  • 구글에서 swift date utc format등 아래의 키워드를 활용해서 검색해보세요.
  • date 객체는 기본적으로 UTC, GMT+0의 시간을 저장합니다.
  • date 객체는 timezone이나 locale 같은 값을 안 갖고 있습니다.
  • SwiftDate 같은 라이브러리는 그걸 같이 저장할 수 있는 객체를 제공합니다.
  • 현지 시간으로 잘 변환하려면 Formatter를 쓰거나 Calendar를 써서 변환 해야 됩니다.

Top으로 가기



10. Apple 개발: 그외

delegate 는 어떻게 사용하는 것인가요?

  • 마기님의 블로그의 delegate 설명이 좋은 것 같습니다. 여기를 봐보셔요.
  • 위의 블로그 설명에 개인적으로는 제일 마음에 들었습니다. 위임자의 의미를 가지고 있습니다. 필요한 상황을 정의하고 대신 해달라고 요청하면 됩니다. 필요한 상황에 사용하면 좋습니다.
  • 저는 데이터를 공유하거나 기능처리 요청을 하는 여러 방법 중 가능하면 delegate 패턴부터 고민하고 이게 가용한 상황이 아니라면 다른 방법을 찾아봅니다.

여러 컨트롤러에서 보여줘야하는 뷰가 있는데 재사용성을 높일수있는 방안이 있나요?

  • xib 가 있습니다. 구글에 'xib' 만 검색하셔도 다양한 자료를 얻을 수 있습니다. nib 파일이라고도 합니다. 같은 개념으로 이해하시면 됩니다.
  • Nib : Next Interface Builder
  • Xib : Xcode Interface Builder

푸시로 기본적으로 보내는 것 메시지 외에 다른 정보들을 보내고 싶은 데, 전송 시에 많은 정보를 담아 보낼 수 있나요?

As per the updated Apple docs the size is 4KB.

For regular remote notifications, the maximum size is 4KB (4096 bytes)
For Voice over Internet Protocol (VoIP) notifications, the maximum size is 5KB (5120 bytes) NOTE

swift로 개발할때 c++ 라이브러리 사용할 수 있나요?

  • 구글에서 swift c++정도로 검색을 하면 될 것 같습니다.
  • Objc로 Wrapping해서 Bridge를 통해서 불러와야 합니다.

Top으로 가기



11. design pattern

아키텍쳐 패턴으로 공부할만한 좋은 셈플 링크가 있을까요?

MVC 패턴이 무엇인가요?

MVC는 Model-View-Controller의 약자입니다. 
개발할 때 3가지 형태로 구분하여 개발하는 소프트웨어 개발 방법론입니다.

그 3가지 요소를 설명하면
Model은 무엇을 할지 정의합니다. 비지니스 로직에서의 알고리즘, 데이터 등의 기능을 처합니다.
Controller는 어떻게 할지를 정의합니다. 화면의 처리기능과 Model과 View를 연결시켜주는 연활을 하지요. 
View는 화면을 보여주는 역활을 하지요. 웹이라면 웹페이지, 모바일이라면 어플의 화면의 보여지는 부분입니다.
MVC는 복잡한 대규모 프로그램을 개발을 하게 되면서 문제점이 확인되었습니다.

다수의 View와 Model이 Controller를 통해 복잡하게 연결될 수 있기 때문에 Controller가 뚱뚱해지게 되는 Massive ViewController(대규모 MVC 어플리케이션)가 되어버립니다.

View와 Controller가 라이브사이클에 강하게 연결되어있고, 더불어 Controller를 통해 View와 Model간에도 관계가 복잡하게 연결되어있어서 수정시 테스트가 힘들고, 파악이 어렵기 때문에 여러 Side-Effect를 불러오게 되는 문제점이 있습니다.

그래서 MVC는 위 문제점을 해결하기 위해 여러 페러다임을 수용한 다양한 패턴을 파생시켰습니다.

Top으로 가기



12. RxSwift

RxSwift가 무엇인가요?


Top으로 가기



13. 기타

애플 사이트나 시스템 운영 상태의 에러 유무는 어떻게 알 수가 있나요?

iOS 배포 최소 버전에 대해 고민중입니다. iOS OS버전을 사용하는 통계 정보를 알 수 있는 정보나 링크가 있을까요?

2018년 10월 29일 2018년 10월 10일 2018년 09월 03일 2018년 04월 22일
2017년 12월 04일 2017년 07월 28일 2017년 02월 20일 -
  • 최신 OS가 높은 점유율을 차지 하고 있고, 이전 OS까지 합하면 90%가 넘을 것 입니다. 그래서 보통 반영한다면, 현재와 이전 정보까지를 포함해서 배포하면 좋을 것 같습니다.
  • iOS 사용자는 업데이트를 빠르게 수용합니다. Earlier 는 테스트 장비나 오래되서 방치된 단말이 많이 포함되어있을 것입니다. 빠르게 업데이트해서 사용하니 최신 OS에 근접한 OS를 하셔도 괜찮을 것입니다. 그래야 유지보수 이슈에 들어가는 비용도 줄어들고, 신기술을 적용하기 좋습니다. 그만큼 사용시 문제점(버그)도 줄어들죠.

이전 OS,Xcode 나 최신 OS, Xcode를 받으려면 어디서 받을 수 있을까요?

  • download 링크 : 다운로드 링크 입니다. 최신 다운로드 정보를 알 수 있습니다.
  • download more 링크 : 지나간 다운로드 정보를 찾을 수 있습니다.



Top으로 가기

Contributors

항상 환영합니다.



즐거운 하루 되세요 🙇‍

讨论区

说说你的看法