두 개의 다른 클래스가 동일한 기본을 상속 할 수 있습니까?

오리

좋아, 클래스를 하위 클래스로 지정하면 해당 클래스가 가진 모든 메서드와 속성을 상속하지만 여러 코드와 속성이 있고 두 개의 다른 클래스에 공통적으로 적용되기를 원한다고 가정하면 상속으로 가능합니까?

예를 들어 UIViewController와 UITableViewController가 있다고 가정합니다.

JScarry

내가 당신의 질문을 이해한다면 대답은 아니오입니다. 동일한 클래스에서 원하는만큼의 클래스를 상속받을 수 있지만 한 클래스가 두 클래스에서 상속되도록 할 수는 없습니다. 당신에게 효과가있는 것은 싱글 톤 클래스를 만드는 것입니다. 화면의 중간 지점 찾기, 캐시에서 파일 제거, 파일 복사 등과 같은 일반적인 작업에 사용하는 유틸리티 클래스가 있습니다. 여러 클래스에서 사용하는 20 개 정도의 메서드가 있습니다. 시스템 버전, 글꼴, 텍스트 크기, 플레이어 이름 등과 같은 전역 변수를 설정하고 가져 오는 데 사용하는 또 다른 단일 클래스가 있습니다.

다음과 같은 유틸리티 메서드를 호출합니다.

        NSString *resultsFilePath          = [Utilities cachedFilePath:@"Results"];
        NSString *fullResultsFilePath      = [Utilities cachedFilePath:@"FullResults"];
        NSString *troublesomeWordsFilePath = [Utilities cachedFilePath:@"TroublesomeTargets"];

       [Utilities copyCachedResultsToFile];

그리고 다음과 같은 전역 변수 :

if ([Globals sharedInstance].currentClient) {
        self.clientInput.text = [Globals sharedInstance].currentClient;
    }

내 유틸리티 클래스는 다음과 같이 시작됩니다.

//
//  Utilities.m
//
//  Created by John Scarry on 11/3/11.
//  Copyright (c) 2011 Learning Fundamentals, Inc. All rights reserved.
//

#import "Utilities.h"
#import "mach/mach.h"

@implementation Utilities

+ (CGPoint)findMidpoint:(UIView *)view {
    CGPoint midPoint;
    midPoint.x = view.bounds.origin.x + view.bounds.size.width/2;
    midPoint.y = view.bounds.origin.y + view.bounds.size.height/2;
    return midPoint;
}

+ (NSString *)formattedDate {
    NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd"];
    NSString *todaysDate = [dateFormatter stringFromDate:[NSDate date]];
    return todaysDate;
}

+ (NSString *)formattedClientName {
    NSString *client = [NSString stringWithFormat:@" "]; 
    if( [Globals sharedInstance].currentClient ) client = [NSString stringWithFormat:@" %@ ",[Globals sharedInstance].currentClient];
    return client;
}

내 Globals 클래스는 다음과 같이 시작됩니다.

//
//  Globals.m
//
//  Created by John Scarry on 11/3/11.
//  Copyright (c) 2011 Learning Fundamentals, Inc. All rights reserved.
//

#import "Globals.h"

@implementation Globals

static Globals *singleton = nil;

+(Globals *) sharedInstance {

    if (nil != singleton) return singleton;

    static dispatch_once_t onceToken;        // lock
    dispatch_once(&onceToken, ^{             // this code is called at most once
        singleton = [[Globals alloc] init];
    });

    return singleton;

}

// Lots of the properties use a default value from the .pch file
// Use lazy instantiation to overide the getter to make sure it is set.

- (NSInteger) systemVersionNumber {

    return [[[[UIDevice currentDevice] systemVersion] componentsSeparatedByString:@"."][0] intValue];
}

- (NSString *)scoringType {

    if ( !_scoringType ) _scoringType = SCORING_TYPE;
    return _scoringType;
}

- (NSString *)targetSoundDelayCode {

    if ( !_targetSoundDelayCode ) _targetSoundDelayCode = TARGET_SOUND_DELAY;
    return _targetSoundDelayCode;
}

- (BOOL)checkBoxes {

    if ( !_checkBoxes ) _checkBoxes = FORCED_CHOICE_SCORING;
    return _checkBoxes;
}

- (BOOL)showFavorites {

    if ( ! _showFavorites ) _showFavorites = NO;
    return _showFavorites;
}

편집 : 많은 전역에 대한 기본값을 설정하는 각 앱에 .pch를 사용합니다. 예 :

#define FORCED_CHOICE_SCORING NO
#define SCORING_TYPE @"CDI"

그런 다음 사용자가 변경하지 않은 경우 기본값을 사용하는 사용자 지정 getter를 작성합니다.

- (NSUInteger)targetSoundDelay {

    if ( !_targetSoundDelay ) _targetSoundDelay = TARGET_SOUND_DELAY];
    return _targetSoundDelay;
}

- (NSString *)scoringType {

    if ( !_scoringType ) _scoringType = SCORING_TYPE;
    return _scoringType;
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

두 개의 다른 클래스를 캐스팅 할 수 있지만 동일한 속성을 가지고 있습니까?

분류에서Dev

동일한 기본 클래스를 상속하는 두 클래스가 서로의 함수를 사용할 수 있습니까?

분류에서Dev

C #의 두 가지 다른 클래스에서 동일한 열거 형을 사용할 수 있습니까?

분류에서Dev

인터페이스가 두 개인 경우 한 클래스가 둘 다 상속 할 수 있습니까?

분류에서Dev

두 개의 다른 활동 클래스에서 하나의 조각을 사용할 수 있습니까?

분류에서Dev

동일한 시스템에 두 개의 Linux OS가 있습니다. 다른 OS의 파일을 안전하게 편집 할 수 있습니까?

분류에서Dev

두 스레드가 동일한 포트에있는 두 개의 다른 소켓과 동시에 상호 작용할 수 있습니까?

분류에서Dev

한 클래스에 두 개 이상의 수퍼 클래스가있을 수 있습니까?

분류에서Dev

두 개의 다른 클래스가 클래스 모음이고 각 객체가 자신이 속한 처음 두 클래스 중 어느 것을 알고 있는지 속성을 가질 수 있습니까?

분류에서Dev

다른 항아리에 동일한 이름과 동일한 패키지 구조를 가진 두 개의 클래스가 있습니다. 항아리에서 특별히 클래스를 선택할 수 있습니까?

분류에서Dev

기본 인터페이스가 동일한 두 개의 제약 조건이 동일 할 수 없습니다.

분류에서Dev

두 개의 다른 앱에서 동일한 릴리스를 사용할 수있는 경우 연속 내보내기는 어떻게 작동합니까?

분류에서Dev

어떻게 단일 파일을 두 개의 다른 스트림에 동시에 연결할 수 있습니까?

분류에서Dev

동일한 컴퓨터에서 두 개의 다른 OS간에 파일을 공유 할 수 있습니까?

분류에서Dev

두 개의 Virtualizer에서 동일한 가상 머신을 사용할 수 있습니까?

분류에서Dev

C ++는 컴파일러에 의해 (가상) 개인 기본 클래스를 제거 할 수 있습니까?

분류에서Dev

동일한 데이터 구조의 둘 이상의 구현을 확장하는 함수가있는 클래스입니다. 할 수 있습니까?

분류에서Dev

한 테이블에 두 개의 외래 키를 사용하여 다른 열의 동일한 열을 참조 할 수 있습니까?

분류에서Dev

Pushwoosh Cordova API : 두 개의 다른 장치가 동일한 HWID를 생성 할 수 있습니까?

분류에서Dev

두 개의 다른 뷰 컨트롤러에 동일한 뷰를 추가 할 수 있습니까?

분류에서Dev

다른 클래스에서 상속 된 파이썬 클래스의 초기 정의에 어떻게 추가 할 수 있습니까?

분류에서Dev

Visual Studio의 두 개의 개별 인스턴스에서 동일한 솔루션의 두 가지 다른 기록 버전을 어떻게 열 수 있습니까?

분류에서Dev

단일 "pthread_mutexattr_t"속성을 사용하여 두 개의 다른 뮤텍스를 초기화 할 수 있습니까?

분류에서Dev

단일 "pthread_mutexattr_t"속성을 사용하여 두 개의 다른 뮤텍스를 초기화 할 수 있습니까?

분류에서Dev

상속 된 클래스가 다른 상속 된 클래스의 가상 함수를 재정의 할 수 있습니까?

분류에서Dev

동일한 인수로 두 개의 Python 클래스를 초기화하고 다른 결과를 얻습니다.

분류에서Dev

두 개의 다른 테이블에서 동일한 외래 키 제약 조건을 사용할 수 있습니까?

분류에서Dev

컨트롤러가 다른 동일한 JSP 페이지에서 두 개의 다른 버튼을 클릭하여 두 개의 호출 ajax를 어떻게 개발할 수 있습니까?

분류에서Dev

클래스가 다른 개체의 클래스 유형을 변경할 수 있습니까?

Related 관련 기사

  1. 1

    두 개의 다른 클래스를 캐스팅 할 수 있지만 동일한 속성을 가지고 있습니까?

  2. 2

    동일한 기본 클래스를 상속하는 두 클래스가 서로의 함수를 사용할 수 있습니까?

  3. 3

    C #의 두 가지 다른 클래스에서 동일한 열거 형을 사용할 수 있습니까?

  4. 4

    인터페이스가 두 개인 경우 한 클래스가 둘 다 상속 할 수 있습니까?

  5. 5

    두 개의 다른 활동 클래스에서 하나의 조각을 사용할 수 있습니까?

  6. 6

    동일한 시스템에 두 개의 Linux OS가 있습니다. 다른 OS의 파일을 안전하게 편집 할 수 있습니까?

  7. 7

    두 스레드가 동일한 포트에있는 두 개의 다른 소켓과 동시에 상호 작용할 수 있습니까?

  8. 8

    한 클래스에 두 개 이상의 수퍼 클래스가있을 수 있습니까?

  9. 9

    두 개의 다른 클래스가 클래스 모음이고 각 객체가 자신이 속한 처음 두 클래스 중 어느 것을 알고 있는지 속성을 가질 수 있습니까?

  10. 10

    다른 항아리에 동일한 이름과 동일한 패키지 구조를 가진 두 개의 클래스가 있습니다. 항아리에서 특별히 클래스를 선택할 수 있습니까?

  11. 11

    기본 인터페이스가 동일한 두 개의 제약 조건이 동일 할 수 없습니다.

  12. 12

    두 개의 다른 앱에서 동일한 릴리스를 사용할 수있는 경우 연속 내보내기는 어떻게 작동합니까?

  13. 13

    어떻게 단일 파일을 두 개의 다른 스트림에 동시에 연결할 수 있습니까?

  14. 14

    동일한 컴퓨터에서 두 개의 다른 OS간에 파일을 공유 할 수 있습니까?

  15. 15

    두 개의 Virtualizer에서 동일한 가상 머신을 사용할 수 있습니까?

  16. 16

    C ++는 컴파일러에 의해 (가상) 개인 기본 클래스를 제거 할 수 있습니까?

  17. 17

    동일한 데이터 구조의 둘 이상의 구현을 확장하는 함수가있는 클래스입니다. 할 수 있습니까?

  18. 18

    한 테이블에 두 개의 외래 키를 사용하여 다른 열의 동일한 열을 참조 할 수 있습니까?

  19. 19

    Pushwoosh Cordova API : 두 개의 다른 장치가 동일한 HWID를 생성 할 수 있습니까?

  20. 20

    두 개의 다른 뷰 컨트롤러에 동일한 뷰를 추가 할 수 있습니까?

  21. 21

    다른 클래스에서 상속 된 파이썬 클래스의 초기 정의에 어떻게 추가 할 수 있습니까?

  22. 22

    Visual Studio의 두 개의 개별 인스턴스에서 동일한 솔루션의 두 가지 다른 기록 버전을 어떻게 열 수 있습니까?

  23. 23

    단일 "pthread_mutexattr_t"속성을 사용하여 두 개의 다른 뮤텍스를 초기화 할 수 있습니까?

  24. 24

    단일 "pthread_mutexattr_t"속성을 사용하여 두 개의 다른 뮤텍스를 초기화 할 수 있습니까?

  25. 25

    상속 된 클래스가 다른 상속 된 클래스의 가상 함수를 재정의 할 수 있습니까?

  26. 26

    동일한 인수로 두 개의 Python 클래스를 초기화하고 다른 결과를 얻습니다.

  27. 27

    두 개의 다른 테이블에서 동일한 외래 키 제약 조건을 사용할 수 있습니까?

  28. 28

    컨트롤러가 다른 동일한 JSP 페이지에서 두 개의 다른 버튼을 클릭하여 두 개의 호출 ajax를 어떻게 개발할 수 있습니까?

  29. 29

    클래스가 다른 개체의 클래스 유형을 변경할 수 있습니까?

뜨겁다태그

보관