비디오: AdMob Rewarded Video - Mobile Ads Garage #7 2024
프로퍼티가 iOS 앱 프로그래밍을 위해 처음 개발되었을 때, 예를 들어 변수 기반 속성에 대한 접근 자 작성의 지루함을 피하십시오. 사람들은 속성을 인스턴스 변수에 액세스하는 방법으로 생각했습니다.
실제로 인스턴스 변수는 속성과 동일시해서는 안되며, 더 중요한 것은 인스턴스 변수를 공개해서는 안된다는 것입니다. 이렇게하면 캡슐화의 객체 지향 원리를 위반하지만, 다른 시간대의 대화입니다. 사실, Apple의 새로운 접근 방식은 인스턴스 변수 선언을 클래스의 구현 파일에 넣는 것입니다.
@interface TestDriveController: UIViewController {AVAudioPlayer * backgroundAudioPlayer; SystemSoundID burnRubberSoundID; BOOL touchInCar; } 이 접근법은 인스턴스 변수 (ivars)를 모든 사람과 모든 사람에게 보여주고 캡슐화 원칙에 위배됩니다 (변수에 액세스 할 수없는 경우에도).
클래스 확장자
입니다. @interface TestDriveController () {AVAudioPlayer * backgroundAudioPlayer; SystemSoundID burnRubberSoundID; BOOL touchInCar;} -d 두 번째 방법은 클래스의 @implementation 블록에 인스턴스 변수를 선언하는 것입니다.
@implementation TestDriveController AVAudioPlayer * backgroundAudioPlayer; SystemSoundID burnRubberSoundID; BOOL touchInCar;
클래스 확장은 Objective-C 범주의 변형이다.사용하는 접근 방식은 선택 사항입니다. 클래스 확장을 사용하면 변수를 쉽게 구별 할 수 있습니다.
클래스 확장을 사용하여 공개적으로 선언 된 메소드 세트를 가져온 다음 클래스 만 사용할 추가 메소드를 선언 할 수도 있습니다.
@interface TestDriveController () {AVAudioPlayer * backgroundAudioPlayer; SystemSoundID burnRubberSoundID; BOOL touchInCar;} - (void) privateMethod; -d
이 메소드는 실제로 private는 아니지만 헤더 파일에는 표시되지 않습니다. 그것들은 "비공개 API"입니다."