Skip to content

aldalddl/Cocoa-macOS-Examples

Repository files navigation

Cocoa-macOS-Examples

Objective-C로 macOS 용 Cocoa 예제 따라하며 학습하기

(코드 출처: https://github.com/NikolaGrujic91/Cocoa-macOS-Examples)


macOS

  • Cocoa API: Object-Oriented-API
  • CocoaTouch(Framework): AppKit의 iOS 용 버전 (CocoaTouch ⊃ UIKit)
  • AppKit: 네이티브 macOS 애플리케이션 개발을 위한 toolkit, 그래픽 인터페이스를 만드는 클래스들을 제공

Objective-C

  • 데이터 바인딩과 관찰 기능 (SwiftUI + Combine과 같은 작업)
    • UI와 데이터 간의 바인딩 쉽게 설정 가능
      • bind:toObject:withKeyPath:options: 사용 (양방향 데이터 동기화)
    • KVO(Key-Value Observing) 내장
      • willChangeValueForKey:, didChangeValueForKey:로 이벤트 수동 제어 가능
  • nullable: 값이 nil일 수 있음 (Swift의 optilnal)
    • Objective-C의 포인터 타입은 nil을 허용하므로 nullable이 선택사항
      그러나 Objective-C 코드를 Swift에서 사용할 때 nullableoptional로 매핑되어 호환성 면에서 좋음 + 코드 가독성
    • nullablenonnull
      • 포인터 타입에서, nil이 될 수 있는지의 여부를 명시적으로 구분하기 위해 사용
      • 둘 다 명시해주면 Swift에서 사용 시 optional / non-optional 타입으로 매핑되어 유용
      • nullablenonnull은 컴파일러 힌트로 동작
        nonnull에 nil이 들어가도 컴파일 경고만 일어나고 오류가 일어나지 않음
        런타임에서도 강제 검사가 없어 nil이 전달되도 강제로 오류를 발생시키지 않음
        -> 필수 값이라고 가정한 코드에서 예상치 못한 결과 발생 가능
      • nonnull을 생략하면 컴파일러는 nullable로 해석하기 때문에 반드시 값이 있어야하는 경우에 써주어야 함
        + 값을 강제하므로 불필요한 nil 검사 코드 줄일 수 있음
  • 헤더가드
    • #ifndef: 중복 정의를 피하기 위한 매크로 (파일이 여러번 포함되더라도 컴파일러가 중복으로 처리하지 않도록 함)
      #ifndef football.h
      #define football.h
      • 처음 포함되었을 때: 정의되지 않은 상태이므로 #define football.h 코드 실행
      • 중복 포함되었을 때: 이미 정의되어 있으므로 #define football.h 코드 무시

예제 앱 목차

1. Cocoa Speech Synthesizer

1

2. Cocoa Slider Binding

2

3. Cocoa Table View

스크린샷 2024-12-09 오후 4 40 10

About

Cocoa examples for macOS written in Objective-C.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published