본문 바로가기

Swfit/짧은 정리5

dynamic lookup 런타임에 class, structure, enum, protocol의 멤버들에 이름으로 접근 가능하도록 할 수 있는 attribute. 쉽게 표현해서, '.'을 이용해 멤버에 접근할 수 있는 기능을 제공하는 것. 아래의 예시에서처럼 'DynamicStruct'라는 struct에 @dynamicMemberLookup를 붙여주면, 'subscript(dynamicMember:)' method를 작성해주어야 한다. 예시에서는 subscript의 parameter를 dictionary의 key로 이용해서 value를 획득하는 형식이다. @dynamicMemberLookupstruct DynamicStruct { let dictionary = ["someDynamicMember": 325, .. 2025. 7. 22.
OMV 설치가 중간에 막힌다면 보세요 (+Raspbian 10번 넘게 재설치한 사람..) 최근 NAS 서버 제작에 욕심이 생겨서 라즈베리 파이를 이용해 직접 만들게 되었는데, 잘 몰라 고생했던 부분이 있어 공유하고자 합니다.많은 사람들이 주로 사용하는 Open media vault를 이용하기로 하였고, 이 프로그램은 raspbian 설치 후에 '간단하게 설치'해서 사용할 수 있습니다. (제가 참고했던 유튜브 및 블로그에서는 다들 간단하게 하시더라구요. 😂) '간단하게 설치'해서 바로 사용할 수 있는 것 같은데, 이 설치가 제 발목을 잡았었습니다😱. Raspbian 설치 때도 우여곡절이 있어서 OS를 지웠다 설치했다를 n회 반복해서 이미 지친 상태였는데, omv는 설치 중간에 자꾸만 진행이 멈췄습니다. omv 설치 막바지에 설치 시 이용되었던 프로그램들을 삭제하는 과정이 있는데, 그 중 '.. 2025. 6. 29.
Storyboard UILabel에 linebreak(줄바꿈) 적용하기 코드로 String에 줄바꿈을 주기 위해서는 보통 `\n`을 쓰면 됩니다.let titleStr = "I am\nthe title"let titleLbl = UILabel()titleLbl.text = "titleStr"하지만 Storyboard의 Attribute Inspector에서 줄바꿈을 적용하려면 `\n`으로는 적용이 되지 않습니다.대신에, 줄바꿈을 원하는 부분에서 `Alt + Enter`를 해주면 됩니다. 그러면 위 사진에 나온 것처럼 줄바꿈이 inspector 창에서 바로 적용되어 나오는 것을 볼 수 있습니다. 참고- https://stackoverflow.com/questions/44384991/weird-behavior-on-uilabel-with-n-on-storyboard 2025. 5. 26.
Selector란? Selector란?UIButton을 누르면 어떤 동작을 수행하게 할 것인지 action을 추가할 때 보면 `#selector`구문을 사용해서 사용될 method를 알려주게 됩니다. 이 selector는 method 이름을 알려주는 방식이고, class나 struct 내부에 정의된 method 이름을 지칭합니다.왜 selector를 이용해야 할까요? Swift와 Obj-c 간의 bridge 역할을 수행해 줍니다. 즉, Objective-C 기반의 코드를 Swift에서 사용하기 위한 방식들 중 하나입니다. selector에 들어갈 수 있는 method는 반드시 `@objc`를 앞에 붙여주어야 하는데, 이 attribute를 붙여주어야만 Objective-C runtime에 접근이 가능해지기 때문입니다.언제 .. 2025. 4. 3.
저장프로퍼티를 extension에 정의할 수 없는 이유 Extension은 class, struct, protocol, enum에 사용이 가능한 기능으로, 기존 타입에 새로운 기능을 추가하도록 도와줍니다. 직접적인 코드 접근 권한이 없는 프레임워크나 라이브러리 등의 기능을 확장할 수 있게 해주어 매우 유용하게 사용이 됩니다. 이런 extension에는 저장 프로퍼티를 사용할 수 없다는 제한이 있습니다. 그 이유는 기존 타입의 추가적인 메모리를 사용할 수 없다는 특성 때문입니다. 기존 타입의 추가적인 메모리를 사용하면, compile 시 instance를 생성할 때 문제를 일으킬 수가 있다고 합니다. 저장 프로퍼티는 추가적인 메모리를 요구하는 프로퍼티이기 때문에 compile 시 문제를 야기하게 되고, 그렇기 때문에 extension 내부에 저장이 불가능 합니.. 2024. 4. 8.
반응형