본문 바로가기
[Objective-C] 기타 [Objective-C] 기타 출처 : OS X 구조를 이해하면서 배우는 Objective-C 부록A. Foundation 프레임워크 개요 * A.1 주요 클래스 개요 -NSCountedSet : 변경 가능한 집합의 클래스, 같은 객체를 여러 번 포함할 수 있다.NSOrderedSet, NSMutableOrderedSet : 여러 객체를 배열처럼 순서대로 저장하는데 같은 객체는 하나만 저장NSIndexSet, NSMutableIndexSet : 배열의 인덱스로 사용하는 음수가 아닌 정수를 요소로 하는 집합. NSSet 과 상속 관계가 없다. -NSProcessInfo : 프로세스에 관련된 다양한 정보를 취득한다. * A.2. 주요 프로토콜 개요 * A.3. 주요 함수와 형식 -CGRectGetHeight.. 2018. 1. 12.
[ios] extern const vs. static const in header [ios] extern const vs. static const in header -extern 으로 설정하면 global 하게 유효한 변수가 되기 때문에 == 비교가 가능하다. -static 으로 설정된 변수는 본디 Objective-C 에서는 해당 파일에서 유효하다.따라서 == 비교가 불가능하고, 해당 Type 에 대해 비교를 해야 한다. -Globally Unique 한 Const 선언을 위해서라면 extern 으로 설정하여 사용하는 것이 더 옳다. -주의사항은, extern 으로 설정하는 녀석들은 접두어를 잘 붙여서 사용해야 conflict 가 나지 않는다. [Objective-C] Constant(상수) 정의하기[ios] objective-c 에서의 static constant 정의 하는 방법... 2017. 12. 15.
[Effective Objective-C] 목차와 요약을 통해 한 눈에 알아보는 Effective Objective-C #25 ~ #32 [Effective Objective-C] 목차와 요약을 통해 한 눈에 알아보는 Effective Objective-C #25 ~ #32 출처 : Effective Objective-C #25 : 서드 파티 클래스에는 반드시 카테고리 이름을 접두어로 붙이라 자신이 소유하지 않은 클래스에 카테고리를 추가할 때는 항상 카테고리 이름에 접두어를 붙이라. 자신이 소유하지 않은 클래스에 카테고리를 추가할 때 카테고리의 메서드에도 접두어를 항상 붙이라. #26 : 카테고리에는 프로퍼티를 사용하지 말라 데이터를 캡슐화하는 모든 프로퍼티 선언은 메인 인터페이스 파일에서 하라. 클래스 확장 카테고리를 제외하고 카테고리 내에 프로퍼티를 선언하기보다는 접근자 메서드를 사용하라. #27 : 클래스 확장 카테고리를 이용해 상세.. 2017. 9. 26.
[Effective Objective-C] #25 서드 파티 클래스에는 반드시 카테고리 이름을 접두어로 붙여라 [Effective Objective-C] #25 서드 파티 클래스에는 반드시 카테고리 이름을 접두어로 붙여라 출처 : Effective Objective-C -카테고리는 소스코드가 없는 클래스에 기능을 추가하기 위해 흔히 사용된다.이 기능은 매우 막강하지만 또한 이 기능을 사용함으로써 생기는 문제를 간과하기 쉽다.그 문제는 바로 카테고리의 메서드가 마치 클래스에 원래 있었던 것처럼 클래스의 일부분이 되는 사실 때문에 발생한다.이는 카테고리가 로딩될 때 실행 시간에 일어난다.런타임은 카테고리가 구현한 메서드들을 살펴보고 나서 메서드들을 클래스의 메서드 리스트에 추가한다.추가하는 카테고리의 메서드가 이미 클래스에 있다면, 추가되는 카테고리 메서드가 기존 메서드를 덮어 쓴다.이런 식의 덮어쓰기(overrid.. 2017. 9. 9.
[Effective Objective-C] 목차와 요약을 통해 한 눈에 알아보는 Effective Objective-C #17 ~ #24 [Effective Objective-C] 목차와 요약을 통해 한 눈에 알아보는 Effective Objective-C #17 ~ #24 #17 : description 메서드를 구현하라 인스턴스를 설명하는 유용한 문자열을 제공하려면 description 메서드를 구현하라. 객체가 출력하는 내용을 디버깅할 때 좀 더 자세해지길 원한다면 debugDescription 을 구현하라. #18 : 가변 객체보다는 불변 객체를 사용하라 가능하다면 객체를 불변(immutable)으로 만들라. 프로퍼티를 내부에서 설정할 수 있게 하려면 클래스 확장 카테고리로 읽기 전용 속성을 읽기-쓰기로 확장하라. 가변 컬렉션을 프로퍼티로 노출하기보다는 컬렉션에 포함된 객체를 조작할 수 있는 메서드를 제공하라. #19 : 명확하고 .. 2017. 9. 8.
[Effective Objective-C] #20 프라이빗 메서드 이름에 접두어를 사용하라 [Effective Objective-C] #20 프라이빗 메서드 이름에 접두어를 사용하라 출처 : Effective Objective-C -프라이빗 메서드에 접두어를 붙이는 것이 좋다.퍼블릭 메서드와 프라이빗 메서드를 깔끔히 구분하여 디버깅할 때 도움이 된다. -프라이빗 메서드에 표시를 해두면 메서드 이름이나 시그너처를 바꿀 때 한 번 더 생각하게 된다.메서드가 퍼블릭이면 변경을 좀 더 신중하게 생각해야 한다.클래스의 퍼블릭 API 로 바꾸는 것이 적절하지 않을 수 있기 때문이다.퍼블릭으로 변경하면 해당 클래스 사용자는 그들의 코드를 해당 변경에 맞게 갱신해야 한다.그러나 메서드가 내부를 위한 것이면 외부에 공개된 퍼블릭 API 에 영향을 끼치지 않고 오직 해당 클래스의 코드만 변경하면 된다. -사용할.. 2017. 8. 31.
[Effective Objective-C] #19 명확하고 일관된 작명법을 사용하라 [Effective Objective-C] #19 명확하고 일관된 작명법을 사용하라 출처 : Effective Objective-C -오브젝티브-C 의 이름 짓는 법은 좀 더 장황한 이름을 사용하기 때문에 훨씬 명확하다.메서드와 변수 이름에 첫 문자를 소문자로 쓰는 카멜 표기법을 사용하고,클래스 이름은 항상 첫 문자가 대문자인 카멜 표기법을 사용한다. 이름에는 항상 두세 문자의 접두어를 사용한다. 메서드 이름 짓기 -긴 메서드 이름을 사용하는 것을 두려워하지 말라.메서드 이름이 메서드가 하는 일을 정확히 표현할 만큼만 길게 만들라.그러나 극도로 긴 이름을 쓰지는 말아야 한다.메서드 이름은 간결하고 정확해야 한다. -NSString 클래스는 좋은 작명 관례 지침을 다르는 최고의 예다. -다음 몇 가지 법칙.. 2017. 8. 30.
[Effective Objective-C] 목차와 요약을 통해 한 눈에 알아보는 Effective Objective-C #9 ~ #16 [Effective Objective-C] 목차와 요약을 통해 한 눈에 알아보는 Effective Objective-C #9 ~ #16 #9 : 클래스 클러스터 패턴을 사용해 구현의 상세 내용을 숨겨라. 클래스 클러스터 패턴은 간단한 퍼블릭 퍼사드 뒤편에 상세 구현을 숨길 때 사용할 수 있다. 클래스 클러스터는 시스템 프레임워크에서 널리 사용된다. 클래스 클러스터의 퍼블릭 추상 클래스의 하위 클래스를 만들 때는 항상 주의를 기울여야 한다. 그리고 문서가 있으면 반드시 먼저 읽어봐야 한다. 정리자 주 : 자바의 Interface 개념 #10 : 연관 객체를 사용해 기존 클래스에 사용자 정의 데이터를 연관 지으라 연관 객체는 객체 두 개를 연결하는 방법을 제공한다. 연관 객체의 메모리 관리 속성으로 최소 소.. 2017. 8. 19.
[Effective Objective-C] #15 접두어를 사용해 네임스페이스 충돌을 피하라 [Effective Objective-C] #15 접두어를 사용해 네임스페이스 충돌을 피하라 출처 : Effective Objective-C -오브젝티브-C 는 내장(built-in) 네임스페이스 기능이 없다.그렇기 때문에 일어날 가능성이 있는 충돌을 피하는 방법을 사용하지 않으면 이름은 쉽게 충돌한다.앱에서 이름이 충돌하면 중복 심벌 에러(duplicate symbol error)가 발생하여 링크(link)가 되지 않는다. -링크가 안 되는 것보다 더 좋지 않은 상황은 중복된 것을 포함한 라이브러리 중 하나가 실행 시간에 로딩되었을 때다.이 경우 동적 로더(dynamic loader)는 중복 심벌 에러와 마주치게 될 것이다.그리고 아마도 전체 앱이 다운될 것이다. -이 문제를 피하는 한 가지 방법은 간.. 2017. 8. 17.
반응형