https://stackoverflow.com/questions/17228334/what-is-the-best-way-to-create-constants-in-objective-c https://soulpark.wordpress.com/2012/08/02/objective_c_static_variable/https://nshipster.com/c-storage-classes/ objdctive-c class propertieshttps://useyourloaf.com/blog/objective-c-class-properties/
Attribute 1. class스위프트의 타입프로퍼티와 같은 개념https://useyourloaf.com/blog/objective-c-class-properties/ Attribute 2. nullablehttps://useyourloaf.com/blog/using-nullable-to-annotate-objective-c/ Attribute 3. AutomicityAttribute 4. read/writeAttribute 5. Memory-ManagementAttribute 6. Method Names * https://www.slideshare.net/donggyupark2/i-os-21207633 https://academy.realm.io/posts/tmi-objective-c-propert..
objective-c collection genericsobjc의 제네릭은 lightweight이라고 한다. 원래 objc의 제네릭이 없었던 것 같은데 swift의 제네릭과 호환하기 위해서 나온 것 같다. 꼭 호환을 위해서가 아니더라도 objc에서 자체적으로 쓸 수도 있는데 swift에 비해서 strict하지 않다. 그래서 lightweight라고 한 것 같다. swift에서는 염격하게 제네릭 타임이 아니면 넣지도 못하는데 objc에서는 경고만 띄어준다. 경고에 성격상 빌드도 되고 실행도 된다. 또한 콜랙션 요소를 받을 때도 타임이 맞지 않으면 경고만 띄어준다. 역시 실행된다. 기본적으로 objc에서 쓸 때는 제한이 많이 없는 것 같다. custom class에서도 사용가능하고, 기본 콜랙션 객체인 NS..
Key-Value Coding Programming Guide - Adopting Key-Value Coding - Compliance Checklist객체가 KVC를 사용하기 위해서는 아래 내용을 체크하세요 Attribute and To-one Relationship Compliance✅ attribute나 일대다 관계의 프로퍼티에 대해 나 is메소드를 구현하거나 나 _ 인스턴스를 만드세요. 프로퍼티를 자동생성으로 만들면(@property, @synthesize) 자동으로 컴파일러가 알아서 해줍니다. !Note프로퍼티 네임은 보통 소문자로 시작하지만, 프로토콜의 기본구현은 대문자로 시작해도 동작합니다. (URL 같은) ✅ 프로퍼티가 변경가능 하면 set 메소드를 구현하세요. 프로퍼티를 자동생성으로 만들..
Key-Value Coding Programming Guide - Adopting Key-Value Coding - Designing for PerformanceKVC 좋죠. 특히 기본 구현에 의지해서 대부분 작업을 할 때 편합니다만, 인다이렉션이 많아져서 직접 메소드 호출하는 것보다 느립니다. 그래서 KVC가 주는 장점인 유연성이 필요할 때만 사용하는 게 좋습니다. 또는 다른 코코아 기술을 사용할 때 사용하면 좋습니다.(cocoa binding, core data, kvc, applescript) Overriding Key-Value Coding Methods객체가 KVC를 사용하기 위해서는 일반적으로 NSObject를 상속하면 됩니다. 그리고 특정 프로퍼티 접근자와 이 가이드에서 나오는 관련된 메소드..
Key-Value Coding Programming Guide - Adopting Key-Value Coding - Decribing Property RelationshipsClass description은 클래스에 있는 일대일, 일대다 프로퍼티를 기술하는 메소드를 제공합니다. 클래스 프로퍼티 간에 이러한 관계를 정의하면, KVC코딩을 보다 잘 사용할 수 있습니다. Class DescriptionsNSClassDescription 클래스에 메타데이터를 얻을 수 있는 인터페이스를 제공합니다. class description 객체는 특정 클래스 객체의 사용가능한 attributes를 기록하고, 또한 해당 클래스의 객체와 다른 객체간의 관계(일대일, 일대다)도 기록합니다. 예를 들어 attributeKeys ..
Key-Value Coding Programming Guide - Adopting Key-Value Coding - Adding ValidationKVC 프로토콜은 key나 keypath에 대해서 검증하는 메소드를 가지고 있습니다. 이 메소드들의 기본 구현은 접근자 메소드와 비슷하게 naming patterns을 따릅니다. validate:error: 메소드를 사용해서 key값을 검증합니다. validateValue:forKey:error:메시지에 반응해서 동작합니다. 프로퍼티에 대한 검증 메소드를 만들지 않으면, 기본적으로 값에 상관없이 유효하다고 판단합니다. !Note이 문서를 objc 에만 해당합니다. swift에서는 컴파일러가 알아서 해주는데 , 더 자세한 정보는 The Swift programm..
Key-Value Coding Programming Guide - Adopting Key-Value Coding - Handlinig Non-Object Values기본적으로 KVC이 제공하는 wrap and unwrap에 의존해서 사용합니다. (representing Non-Object Value.) 그러나 non-object properties에 nil이 저장 될 때는 대비해서 기본 구현을 오버라이드 할 수 있습니다. !Note스위프트에서는 모든 프로퍼티가 객체이기 때문에 이 장에서 나오는 내용은 objc에만 적용됩니다. KVC를 사용하는 객체가 setValue:forKey: 메시지를 받을 때 setValue로 nil이 들어오고 key에 해당하는 프로퍼티가 객체가 아니면 setNilValueForKe..
Key-Value Coding Programming Guide - Adopting Key-Value Coding - Defining Collection Methods표준 이름 규칙을 따르는 접근자나 인스턴스 변수를 만들면, KVC 프로토콜의 기본 구현은 그걸 사용 할수 있습니다. 이것은 일대다인 콜랙션 객체에도 적용됩니다. 그러나, 콜랙션접근 자 메소드를 만들면 다음에 나오는 내용을 할 수 있습니다. - Model to - many relationships with classes other than NSArray or NSSet.collection methods를 만들면, key-value getter의 기본구현은 proxy 객체를 리턴합니다. 이 객체는 NSArray 또는 NSSet 메시지에 반응하는 ..