목록전체 글 (67)
광어네 맛집
벌써 2022년 4월 중순을 달려가고 있네요 시간 너무 빠르네 ㅎㅎㅎ 오늘은 SeSac 후기에 대해서 포스팅하고자 합니다! 그럼 바로 고고 SeSac iOS 1기로 수료하게 너무 뜻깊은 시간이었습니다 먼저 교육듣기 전과 후는 어떻게 달라졌는지 봅시다! 사실 교육을 듣기 전에는 아무것도 모른다면 모르는 상태였고 내가 알고 있는 것들이 전부라고 생각했었어요 그렇기 때문에 내가 공부하는 속도대로 공부하면 취업이 되지 않을까? 착각?도 했지만 교육을 들으면서 이런 싹~ 이런 생각을 버리게 되었어요 교육을 듣고 난 뒤에는 현업에 바로 뛰어들 수 있는 주니어가 되었습니다!! 와ㅏㅏㅏ!!!!!!!!!!!!!! 단기간에 이게 되네?라고 생각했어요 진짜 눈물 날 것만 같았어요 그러고 수료와 거의 동시에 취업해서 일을 다..
Xcode 사용하다보면 스토리보드에서 Assistant 가 안보여지거나 이상하게 보여질 때가 있다 그럴 때는 가장 좋은 게 껐다가 다시 켰을 때 원래대로 나온다 끄는 게 귀찮을 때는 Assistant를 열고 option키를 눌러서 열면 잘 나오기도 한다 방금 오류 났을 때 캡처를 했어야 했는데 ㅜㅜ 정신없이 수업따라가다 나만 하나 안되면 찐 당황;; 그때부터 멘붕 상황 스토리보드를 그룹으로 묶었는데 이런 상황이 발생했다... 똑바로 열었고, 껐다가 켜봤고 Assistant를 option키로 열어봤는데도 안됐다 화면을 분할하여 아웃렛을 연결 시키려고 했으나 빨간색 글씨 뜨면서 실패... 해결 일단 여기 동그라미에서 ViewController를 해주면 된다ㅋㅋㅋ... 그리고 identifier 나 story..
드디어 목요일이네요 ㅎㅎㅎ 오늘 내일만 버티면 또 주말입니다 이번 포스팅은 Objective - C 반복문에 대해서 알아보도록 하겠습니다 먼저 for 문에 대해서 알아보면 다음과 같습니다! for (int i = 0; i < 10; i++) { i = i + 10; } for (순환 parameter; 조건; 카운트) { // 구현할 내용 작성 } 참고로 Enum에 대해서도 돌 수 있습니다 for (adorable in dog) { NSLog(@"우리 강아지 이름은 %@입니다.",[adorable name]) } // 틀린 부분이 있으면 언제든지 피드백 환영입니다! 다음은 조건에 따른 반복문입니당 조건을 만족할 때 루프에서 빠져나옴! int count = 1; while (true) { // 탈출 조건 ..
이번 포스팅은 라이브러리를 만들면서 생긴 에러에 대해서 다루고자 함 라이브러리를 좀 더 예쁘게 만들고 싶다는 생각도 있었지만 그건 나중에 업데이트 하는 걸로! 곧 만든 라이브러리 소개 글이랑 Git Readme 업데이트도 할 예정 ㅎㅎ 에러 디버깅 화면을 캡처했는데 그게 어디간 지 없어짐 ㅜ 아무튼 생각나는 내용은 에러: ASSERTION FAILURE ~~ 무슨 thread 내용이 뜸.. 해결 Case 1. Delete Derived Data Xcode -> performance -> Locations -> Derived Data 폴더 -> Derived Data 삭제 해결 Case 2. Update Pods pods 업데이트를 해주기 (근데 내가 만든 라이브러리라서 그닥..?) 해결 Case 3. D..
블로그를 두개를 운영할까 하다가 그냥 네이버 블로그 글을 모두 여기로 가져올까 합니다! 개발 관련 글 70개 언제 다 가져오지... 아니면 그냥 해결했던 거나 배운 내용만 가져올까 고민중에 있습니다! https://blog.naver.com/kwanghochoi2 Keep it up : 네이버 블로그 여행과 요리를 좋아하는 개발자 Lautner Jacob입니다 blog.naver.com 일단 Tistory를 위주로 활동할 예정!
이번 포스팅은 AddTarget에 대해서 작성해보자고 함 오늘은 바로 본론으로 넘어가서 Swift에서는 AddTarget하면 어떻게 썼나면 let button = UIButton() button.addTarget(self, action: #selector(testMethod("내 이름")), for: .touchUpInside) @objc func testMethod(_ name: String) { print("\(name) 출력됨") } 진짜 편함! Objective C는 어렵냐? 아님! Objective C 에서는 다른게 그닥 없음 self.button = [UIButton buttonWithType:UIButtonTypeSystem]; [self.button addTarget:self action:..
요즘은 Swift로는 라이브러리 만드는 중 ㅎㅎ.. 라이브러리 만드는 것도 이래저래 안되는 것도 있어서 개발 경험치 오르는 중 ! 아무튼 이번 포스팅은 간단히 Block에 대해서 설명해볼까 함 Swift 에서는 Closure가 여기에 해당하는 듯! Objective C block 너무 복잡복잡 기본 형태는 앞에 반환타입 중간에는 파라메터 ^(캐럿)을 사용하면 된다 처음 코드 봤을 때는 이게 뭔가 했음 솔직히 이게 맞는가 싶기도 함 Block를 작성할 때 ^(캐럿)을 적는데 블록을 표시하는 심볼 같은 거라고 함 이거 찾는다고 조금 헤맸음 Void (^blockName)(void) = ^{ // 내용 작성 } 사용은 아래처럼도 쓰는 거 같았음 - (void) testNaming:(NSString)naming..
후아ㅏㅏ ObjC 에 대해서 적을 내용이 참 많네.. 이번 포스팅은 특별한 건 아니고 내가 생각하고 있던 거랑 다른 분의 의견을 종합해서 적어보고자 한다! 오래된 회사에서 코드를 뜯어보면 레거시 코드가 많이 있다 그런 코드를 보면 이건 왜 그렇게 쓰는지 이해가 안되는 것들이 많이 있을 거임 안 그렇다고? 하면 회사가 크거나 스타트업이거나 리펙토링 했겠죠?ㅋㅋㅋㅋㅋ라고 믿고 싶어요 ㅜ 이거 누가 작성했어!! - 코드를 보니 View 구성이 특정View를 전부 상속받아서 작성되어 있었음 내 생각: 상속을 하는 건 OK, 근데 쓰지도 않을 객체를 만들어 놓고 모든 ViewController에 상속 시켜놓으면 앱이 무거워지지 않을까 함 그래서 뜯어 고치고 싶은데용? 다른 분 생각: 대부분 1인 개발자가 많아서 ..
Swift만 1년 6개월을 봤기 때문에 다른 언어에 대한 궁금증 반? 살짝 부담감 반? 이 있었는데 옵씨를 하게되다니 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ Objective - C를 공부하면 좋은 점이 레거시 코드를 볼 수 있다! (보면서 이건 왜 이렇게 짰을까...라는 생각은 덤) Objective - C에 익숙해지면 조금씩 Swift로 다 바꿔버려야겠다 ㅎㅎㅎ Swift Library에는 SwiftLint가 있어서 규칙을 정할 수 있을 때 좋았음 근데 Objective - C에 규칙을 정해놓은 게 아니라서 뒤죽바죽임ㅎㅎ... 본론으로 넘어가서 초기화를 보면 아래처럼 길~~게 적은게 보기가 싫어서 어떻게 못하나 했는데 - (void)ViewDidLoad { [super viewDidLoad]; NSArray *group..
오늘은 함수 작성 방법에 대해서 포스팅 해볼텐데 Swift가 참 간단하다고 생각이 듦.. 아무튼 본론으로 넘어가서 func testName(firstName fn: String, LastName ln: String) { print("내 이름은 \(fn)\(ln) 입니다") } Objective - C 의 경우 - (Void)testNameWithFrom:(NSString *)fn LastName:(NSString *)ln { return NSLog(@"제 이름은 %@%@ 입니다.",fn, ln); } // 사용할 때 - (Void)viewDidLoad { [self testNameWithFrom:@"홍" LastName:@"길동"]; } // 제 이름은 홍길동 입니다 - (반환값)프로퍼티 이름1:(프로퍼..
Objective-c 특징 - Swift가 대세이긴 하지만 Objective-c 레거시 코드가 많으니까 한번 정리하면서 공부해보고자 한다! Objective - c 코드를 Swift로 다 바꿀 수 있을 때까지 화이팅 1. .h(헤더) .m(본문) 파일로 분할되어 있음 2. nil 값을 선언할 수 있어서 컴파일 에러가 뜨지 않는다 3. guard let 구문이 없어서 if로 nil값을 분기 처리해줘야 한다 4. 메시지 구문형 언어 (Swift 보다 상세하게 작성해야 함) 5. Swift와 다르게 마이그레이션이 필요없음 6. ';'을 마지막에 붙여줘야 함, 블록코딩 [, ]을 사용해야함 7. Property 선언 시 초기에 명확하게 선언해야 함 8. ARC를 스스로 관리해야 함 9. build 속도는 늦으나..
이번에 풀 에러는 Git! Git이 알듯 말듯 해서 많이 어려운 듯 하다 그래서 길지도 않고 짧게 본론으로 바로 넘어가면! 살면서 올리기 싫은 파일을 커밋쳐버린 경우가 있을 거임 그래서 찾다가 캐쉬를 삭제해주면 된다?고 해서 했더니 안됨ㅋㅋㅋ 내가 잘못했을 수도 있지만 ㅋㅋ... git rm -r --cahched . git add git commit -m "Message" 왜 안되는거지 검색해본 바로 아래처럼 나왔는데 ㅜ // local과 원격 저장소 모두 삭제 git rm "지울 파일" // local은 남겨두지만 원격 저장소는 삭제 git rm --cached "지울 파일" 그러다가 누군가 알려주셨음!! 엄청 길긴 한데 이미 커밋해버린 상황에서 되게만 해주세요ㅠㅠ 하는 심정이었음 git filter..
오늘 다뤄볼 내용은 UIView에 대한 내용임 예전에 어떤 이슈가 있었냐면 Storyboard로 작업을 할 경우에 View 순서를 마음대로 바꿀 수 있었는데 Code UI를 작성할 경우, View 순서를 어떻게 바꿔줄까 생각이 들었음 뭐 추가하는 순서대로 나오기야 하겠지만 코드 살펴보기 힘들고 그럴 때 유용할 듯! 본론으로 넘어가면! class ViewController: UIViewController { let testView = UIView() let testView2 = UIView() let testView3 = UIView() override func viewDidLoad() { super.viewDidLoad() viewConstraints() testView.backgroundColor = ..
요즘 코로나가 심해져서 어딜가기가 너무 무서운 것 같음 빨리 코로나가 해결됐으면 좋겠음 ㅜㅜ 오늘 다룰 에러는! "The default FirebaseApp instance must be configured before the default Authinstance can be initialized. One way to ensure this is to call 'FirebaseApp.configure()' in the App Delegate's' application(_:didFinishLaunching withOptions:)'(or the '@main' struct's initializer in SwiftUI)." 이번 오류가 길다 길어; 나는 인스턴스 초기화해줬는데 왜 오류가 떴지 했는데 읽어보니 A..
이 포스팅이 발행될 때면 아마 또 하나의 프로젝트도 끝이 날 거 같다! 요번에 다룰 내용은 다른 블로그에 글이 그렇게 많이 있지 않아서 내가 써보려고 하는데 조금 틀리거나 부족한 부분도 있을 수 있으니 주의!!! 가장 먼저 Firebase FCM 문서에 보면 기본 세팅이 있으니 거기까지는 쉽게 할 수 있을 듯! 그 다음으로 문제가 위에 베너를 클릭했을 때 어떻게 해줄거냐하면 AppDelegate / SceneDelegate에서 처리해주면 됨! ( SceneDelegate가 왜 나온진 다음으로 미루고 ) 다음 함수에서 어떤 순서로 들어오는 지 먼저 확인해보자구요 func application(_ application: UIApplication, didRegisterForRemoteNotificationsW..