Обработка методов класса при подклассе в target-c - PullRequest
1 голос
/ 17 мая 2009

При попытке выполнить мой первый подкласс в Objective-C я наткнулся на следующее предупреждение, которое, похоже, не могу разрешить. Вызов decimalNumberWithMantissa выдает предупреждение о «инициализации из другого типа Objective-C».

#import <Foundation/Foundation.h>

@interface NSDecimalNumberSub : NSDecimalNumber {
}
@end

@implementation NSDecimalNumberSub
@end

int main (int argc, char *argv[]) {
    NSDecimalNumberSub *ten = [NSDecimalNumberSub 
          decimalNumberWithMantissa:10
          exponent:0
          isNegative:NO];
}

Должен ли метод класса обрабатываться подклассом по-разному? Я что-то упустил? Любая помощь будет оценена.

1 Ответ

3 голосов
/ 17 мая 2009

NSDecimalNumber определяет метод decimalNumberWithMantissa:... для возврата NSDecimalNumber, поэтому вы получите обратно экземпляр базового класса, а не ваш пользовательский подкласс. Вам нужно будет создать свой собственный удобный метод для возврата экземпляра вашего подкласса или просто выделить и инициализировать его другим способом.

Если вы пишете свой собственный класс, вы можете определить такой удобный метод для возврата типа id, а затем использовать [[self alloc] init] при создании экземпляра, чтобы сделать ваш класс безопасным для подклассов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...