일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Github file size
- Dispatch.main.sync
- Concurrent
- Automatically manage signing
- ios
- conflicting access to memory
- 클린아키텍쳐
- Ribs
- iOS 버전 점유율
- UICoordinateSpace
- Dependency Rule
- coordinateSpace
- Large File Storage
- swiftdocs
- iOS Target
- memory safety
- Git Large File Storage
- App Signing
- 대머리깃허브
- RxCocoa
- in-out
- rib
- RxSwift
- SWIFT
- Apple Certificate
- 로버트마틴형
- windowScene
- 메모리 접근 충돌
- RIBs Tutorial
- 잡초가득블로그
- Today
- Total
목록전체 글 (68)
빙수왕의 개발일지
문제 상황 UICollectionView의 특정 셀을 디폴트로 설정해놓고 어떤 효과를 주고 싶었음.. 그러나 cellForItem을 사용해서 collectionView.cellForItem(at: IndexPath(row: strongSelf.currentPage.rawValue, section: 0)) 위 코드를 실행했는데 nil이 나왔음. 컬렉션 뷰가 있고 셀을 다 넣어줬는데 왜?????? 이유 Apple Developer Documentation developer.apple.com 여기 보면 "visible cell"을 가져온다고 되어있었다.. 해결방안 먼저 offset을 세팅해서 해당 셀이 보이는 상태로 스크롤을 맞춰놓고 cell 호출했다. 주의: 여기서 setContentOffset animat..
argument label이 withIdentifier인 메소드들.. 예를들어 테이블뷰의 dequeueReusableCell이라던가 UIStoryboard의 instantiateViewController에서 하드코딩을 사용하게 된다. withIdentifier: "cell" withIdentifier: "DetailViewController" 이런식으루.. 근데 이럼 오타가 날수도 있고 유지보수에도 안좋아서 하드코딩은 피하는게 좋으니 다른 방법을 쓸 수 있다. NSObject에 extension으로 identifier의 이름을 가져오는 프로퍼티를 만들어주면 다양한 객체에서 이 프로퍼티를 부르는 것 만으로 identifier의 이름을 하드코딩하지 않고 가져올 수 있다. 아래와 같이 NSObjectExten..
일단 값이 3개일때는 아래처럼 튜플을 사용해서 하는 방법이 있다. if (firstValue, secondValue) == (secondValue, thirdValue) 그리고 더 많은 값을 비교할 떄는 아래처럼 Set안에 넣어서 비교하는 방법도 있다. if (Set(firstValue, secondValue, thirdValue, fourthValue).count == 1)
mkdir과 cd를 맨날 입력하는게 귀찮아서 찾아봤다.. 1. ~/.bashrc를 편집한다. vi ~/.bashrc 2. mkcd함수를 만든다. 아래와 같이 작성 후 저장하고 나옴 mkdir $1: 첫번째 전달인자 -p 옵션 : 폴더가 경로에 없으면 알아서 생성해준다. (ex) mkdir -p /aa/bb/cc 가능. aa와 bb를 자동으로 만들어줌. -- : 전달된 이름이 옵션으로 인식되지 않게 한다. (ex) -나 --를 이름에 사용 가능. cd -P 옵션: 심볼릭 링크를 해결해준다는데, 심볼릭 링크가 뭐냐면 원본 파일에 연결해주는 링크? 라는데 원본을 가리키는, 원본에 접근하게 해주는 복사본이라고 이해했다. 그러니까 이 옵션은 cd로 이동할 폴더와 그 폴더의 심볼릭 링크가 있을 경우, 둘 중 심볼릭..
왼쪽에 얘네 - Gutter 여기 하단부분은 디버깅 영역 실행하기 단축키 - shift 엔터 아래와 같이 결과값을 result area에서 여러가지로 볼 수 있다. 왼쪽부분: 프로젝트 네비게이터
requireActivity() 와 getActivity() 다른점 requireActivity는 있다는걸 보장해준다. 대신 없으면 Exception. app crash 발생 그럼 대체 왜 쓰는것인가? getActivity()를 사용하여 activity.let { } 이렇게 널체크해서 쓰면 되지 않는가? activity.let { } 이런식으로 쓰는거는 좋은건 아니라고 한다..!! 왜냐면 크래시를 막기위해 버그를 만드는 느낌이라서..? 우회하는 느낌이라서..? 그러니까 일부러 사전에 테스트하면서 activity가 null한 상황을 아예 없애려고 require을 쓰는거라고 한다.. 흠... * requireParentFragment() -> 이건 조심해서 써야한다. 보장할 수 없다.
fragment를 같은걸 2개생성하는걸 방지 -> supportFragmentManager.findFragmentByTag(“”) 를 사용하여 이것이 null일 경우 새로 생성해준다. 이런 메소드를 fragment의 companion object에 넣어주고, 액티비티에서 생성시 얘를 콜함 onAttach의 문제: 프래그먼트에서 프래그먼트를 띄울 때는 호출되지 않는다. supportFragmentManager vs childFragmentManager vs parentFragmentManager // childFragmentManager 내(프래그먼트A)가 가지고있는. A프래그에서 B프래그를 붙일 때 사용한다. // 위와 같은 상황에서 fragmentManager을 사용하면, 이건 A의 매니저가 아니라 액..
Q) MainActivity에서 DestinationFragment로 "value1"과 "value2"를 전달하자 1. 그저그런방법 - 내가 한 비루한 방법.. 이렇게는 하지말자. MainActivity.kt class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val fragment = DestinationFragment() fragment.arguments = bundleOf(Pair(DestinationFragment.VALUE_ONE, "value1"..