이번에 WWDC에서 Understanding Swift Performance를 들었는데 참 좋은 내용인것 같아서 블로그에 남겨보려 한다 (라기보단 사실 티머니 스터디 인증을 위한..) 아무튼 이번주에는 Struct, Class의 성능 (Allocation, Reference Counting, Method Dispatch)에 대해 들었는데, 자세한 기록은 https://spark-chive-e55.notion.site/WWDC16-Understanding-Swift-Performance-1-b6828c991e2b4e0188f886bb4196d312 이 링크에서 보면 됩니다 (예시 같은 것도 링크에 전부 정리했어요!!!!!) 이 글에는 내 의식의 흐름과 ,, 내가 정리하고 싶은 대로 정리해보겠습니다~! St..
* 내가 하려던것 TableViewCell.xib 파일 안에 있는 버튼을 눌렀을 때 화면 전환이 일어나도록 하려고 했음. 이때는 tableviewcell 파일이 아니라 ViewController파일에서 버튼이 눌렸을 때..의 상황을 구현해줘야 한다. * 나의 실수 내가 처음에는 tableViewCell 파일에다가 button 을 IBAction으로 연결해서 화면전환을 구현할려고 했는데 오류도 나고 생각해보니까 그렇게 하면 이 셀을 다시 재활용 할 수 가 없는것이었다.. 그래서 어케하지 하다가 .. 일단 UIButton을 IBOutlet으로 연결해놓고, 뷰컨의 UITableViewDataSource를 채택한 곳에서 이 버튼에 접근해서 하기로 함. 그래서 @objc func loginButtonClicked..
UIImageView에 그림자를 주려면 Clips to Bounds와는 절대 양립할 수 없기 때문에, 새로운 방법을 찾아야 한다!! 1. UIView안에 UIImageView를 넣어준 후, UIImageView의 Constraint를 모두 0, 0, 0, 0 으로 준다. 2. UIView를 @IBOutlet으로 연결해준다. @IBOutlet weak var newsContainerView: UIView! @IBOutlet weak var newsImageView: UIImageView! 여기서 containerView가 바로 imageView를 바깥에서 둘러싸고있는 친구이다! 3. 다음과 같은 속성을 준다. newsContainerView.layer.shadowColor = UIColor.black.cg..
엄청 간단했지만 당황한 오류.. 상황 : TableViewCell 안에 UIVIew가 있었고, 이 UIView에 코드로 그림자를 주고 싶어서 IBOutlet으로 연결한 상황 TableViewCell 안에 있는 친구인데 TableViewCell.swift에 연결안하고.. ViewController에 연결함...ㅋㅋ 해결: TableViewCell 내부의 요소들은 TableViewCell.swift 파일에 연결해주자! 요즘 Xib쓰다가 바로 Storyboard에 Cell 넣어서 쓴거하니까 까먹어버렸다,, 나야.. 정신 똑바로 차려라
Extension 이란? Extension(익스텐션)은 구조체, 클래스, 열겨형 등의 타입에 새로운 기능을 추가할 수 있는 기능입니다. 이때 타입의 원본 코드를 알지 못해도, 타입이름만으로도 기능을 확장할 수 있습니다. -> 만약 Int 타입의 기능을 확장하고 싶다면? Int타입의 자세한 구현 코드를 알지 못해도, Int라는 타입이름을 알고 있으니 extension을 사용하면 기능을 확장할 수 있는 것이죠! Swift에서 extension을 이용하면 다음과 같은 일들을 할 수 있습니다. 계산된 인스턴스 프로퍼티와 계산된 타입 프로퍼티의 추가 인스턴스 메서드와 타입 메서드의 추가 새로운 이니셜라이저 제공 서브스크립트 정의 중첩 타입의 선언과 사용 특정 프로토콜을 따르는 타입 만들기 상속 VS 익스텐션 상속..
프로토콜(protocol)이란? 프로토콜은 일종의 규칙, 규약이라고 할 수 있는데, Swift에서 프로토콜은 특정 역할을 수행하기 위한 메서드, 프로퍼티, 기타 요구사항들이 적혀있는 하나의 "설명서(청사진)"라고 할 수 있습니다. 쉽게 말하면, 프로토콜에 꼭 어떤 내용이 들어갈지에 대한 로드맵을 짜놓고, 이를 채택하는 부분에서 로드맵 내부의 세부적인 내용을 구현해주는 것 이라고 할 수 있습니다. 프로토콜의 요구사항을 충족시키는 모든 타입은 '해당 프로토콜의 준수(confrom)한다'고 합니다. 프로토콜의 사용 1. 프로토콜 정의하기 protocol NameProtocol { // 프로토콜 정의 기능1() 기능2() // ... } protocol 이라는 키워드를 이용하여 정의합니다. 프로토콜 이름을 정해..
ScrollView? ScrollView는 스크롤을 이용해 상하좌우로 움직이며 화면보다 넓은 추가적인 컨텐츠를 보여줄 수 있도록 하는 기능입니다. Scroll View 사용방법 1. Freeform 선택 먼저 View Controller를 선택하고, Simulated Size를 Fixed → Freefrom 으로 변경해줍니다. 이후 원하는 크기로 설정해줍니다. 아래는 height를 2000으로 설정해줬더니, 화면이 길~어졌습니다 ^^.. 2. Scroll View 불러오기 Command+shift+L 로 Scroll View를 가져온 후, autolayout을 설정해줍니다. (상하좌우 0,0,0,0으로 설정해줬습니다.) 그러면 빨갛게 오류가 날텐데 Inspector 창에서 Content Layout Gu..
StackView ? 스택뷰(StackView)는 View 들을 일정한 간격으로 배치하기 위해 사용합니다. StackView를 배치한 후 그 내부에 View들을 추가하여 사용하면 됩니다. 물론, View 사이의 관계는 Constraint로도 설계할 수 있지만 Stack View를 이용하면 보다 편하게 배치할 수 있습니다. Horizontal Stack View : View 들을 가로로 배치한다. Vertical Stack View : View 들을 세로로 배치한다. StackView에 View를 넣어준 후, View들을 바로 아래계층에 나란히 배치해줍니다. 저는 Vertical Stack View 아래에 View 3개를 배치해주었습니다. Stack View - Distribution https://dev..
동아리 세미나에서 storyboard마다 뷰컨 1개씩 놓아야 나중에 오류가 안난다고 배웠는데,, 그래서 일단 공부할때도 한 프로젝트에다가 주제별로 .storyboard 파일을 만들었는데 생각해보니.. simulator 를 실행하면 그 스토리보드 화면이 안뜨는것.. 그래서 그 방법을 찾아보았다. 1. 먼저 생성한 storyboard 에는 Storyboard Entry Point 를 만들어주어야 합니다. 이렇게 Is Initial View Controller 부분을 체크해줍니다. 그러면 이제 없었던 -> Stroyboard Entry Point가 생기고 뷰컨에 요런 화살표가 생긴것을 볼 수 있습니다. 이게 바로 실행하면 이 화면부터 시작한다는 의미입니다! 2. info.plist에 가서 simulator 실..