Форум программистов, компьютерный форум CyberForum.ru

Не создается объект. Ошибка "autorelease called without pool for object of class" - Objective-C

Войти
Регистрация
Восстановить пароль
 
andrejap
13 / 13 / 1
Регистрация: 21.04.2013
Сообщений: 245
28.07.2015, 17:22     Не создается объект. Ошибка "autorelease called without pool for object of class" #1
Здравствуйте.
Почему не создается объект Rect?

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#import <Foundation/Foundation.h>
 
@interface Rect : NSObject <NSCopying> {
    double width;
    double height;
}
- (Rect *) initWithWidth:(double)w
                  height:(double)h;
 
- (Rect *) copyWithZone:(NSZone *)zone;
 
- (double) getHeight;
                  
@end
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#import "rectangle.h"
 
@implementation Rect
- (Rect *) initWithWidth:(double)w
                  height:(double)h
{
    width = w;
    height = h;
    
    return [super init];
}
 
//...
@end
Objective-C
1
2
3
4
5
6
7
8
9
10
11
#import <Foundation/Foundation.h>
#import "rectangle.h"
#import "advrectangle.h"
 
int main (int argc, const char * argv[])
{
 
        Rect * r = [Rect initWithWidth:20 height:30];
        NSLog(@"%f", [r getHeight]);
        return 0;
}
Если что увидите здесь не нужное - ногами не пинайте - ObjC учу после плюсов, и как-бы пытаюсь язык понять в парадигме "от сложного к простому".

Спасибо.

log:
sh-4.3$ main
2015-07-28 10:28:05.640 main[531] autorelease called without pool for object (0x12a7eb0) of class GSCInlineString in thread <NSThread: 0x12ae490>
2015-07-28 10:28:05.641 main[531] autorelease called without pool for object (0x12ae2d0) of class NSException in thread <NSThread: 0x12ae490>
2015-07-28 10:28:05.641 main[531] autorelease called without pool for object (0x13a4270) of class NSLongLongNumber in thread <NSThread: 0x12ae490>
2015-07-28 10:28:05.641 main[531] autorelease called without pool for object (0x13aa4f0) of class NSLongLongNumber in thread <NSThread: 0x12ae490>
2015-07-28 10:28:05.641 main[531] autorelease called without pool for object (0x139fa40) of class NSLongLongNumber in thread <NSThread: 0x12ae490>
2015-07-28 10:28:05.641 main[531] autorelease called without pool for object (0x13a19a0) of class NSLongLongNumber in thread <NSThread: 0x12ae490>
2015-07-28 10:28:05.641 main[531] autorelease called without pool for object (0x1350e40) of class NSLongLongNumber in thread <NSThread: 0x12ae490>
2015-07-28 10:28:05.641 main[531] autorelease called without pool for object (0x1350d20) of class NSIntNumber in thread <NSThread: 0x12ae490>
2015-07-28 10:28:05.641 main[531] autorelease called without pool for object (0x134e690) of class NSLongLongNumber in thread <NSThread: 0x12ae490>
2015-07-28 10:28:05.641 main[531] autorelease called without pool for object (0x1350f60) of class NSIntNumber in thread <NSThread: 0x12ae490>
main: Uncaught exception NSInvalidArgumentException, reason: +[Rect initWithWidth::]: unrecognized selector sent to instance 0x601640
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.07.2015, 17:22     Не создается объект. Ошибка "autorelease called without pool for object of class"
Посмотрите здесь:

Objective-C Приведение типов, или как избавиться от "Warning"
Не создается объект класса NSBitmapImageRep Objective-C
Thread 1: Program received signal "SIGABRT" Objective-C
Objective-C Первые "шаги" в objective c
Objective-C Объясните, что это: "static const uint32_t collisionCategory = 0x1 << 0"?
Objective-C Хранение значения переменной "онлайн"
Ошибка: "Необъявленная переменная m" Objective-C
Objective-C Работа с "вкладками" в самодельном браузере
Ошибка "SIGABRT" в Xcode(Objective-C) Objective-C
Ошибка no known class method for selector Objective-C
Objective-C Сообщение "Value stored to . during its initialization"
Objective-C Игра типа "Tower Bloxx"

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Митя800
46 / 46 / 12
Регистрация: 13.07.2015
Сообщений: 156
28.07.2015, 19:24     Не создается объект. Ошибка "autorelease called without pool for object of class" #2
У вас нарушение в инициализаторе. Разберитесь как работают методы в ObjC. Посмотрите методы класса и методы объекта.

Для решения вашей задачи смотрите раздел "Access Instance Variables Directly from Initializer Methods" в документации Apple https://developer.apple.com/library/...011210-CH5-SW2

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
- (id)initWithFirstName:(NSString *)aFirstName lastName:(NSString *)aLastName {
 
    self = [super init];
 
 
 
    if (self) {
 
        _firstName = aFirstName;
 
        _lastName = aLastName;
 
    }
 
 
 
    return self;
 
}
Dangeloid
0 / 0 / 0
Регистрация: 28.07.2015
Сообщений: 8
28.07.2015, 22:19     Не создается объект. Ошибка "autorelease called without pool for object of class" #3
Митя800 прав, а еще советую ivar'ы объявлять через знак _, так по крайней мере делает эпл по умолчанию, когда синтезируется свойство:
Objective-C
1
2
 double _width;
 double _height
и не использовать слово get в методах которые и так возвращают значение (читайте про геттеры и сеттеры):

Objective-C
1
- (double)height;
andrejap
13 / 13 / 1
Регистрация: 21.04.2013
Сообщений: 245
29.07.2015, 02:30  [ТС]     Не создается объект. Ошибка "autorelease called without pool for object of class" #4
Dangeloid, а вот этот знак "_" как-то связан с сокрытием данных? По онлайн курсу я понял, что можно скрывать члены с помощью этого знака. Это так?

Добавлено через 47 минут
Так, кое в чем разобрался. Фабричный метод пометил знаком "+", далее не пойму как же заставить фабричный метод изменять переменные-члены инстанций классов? По типу как этим занимаются фабричные методы стандартных NS* классов.

Добавлено через 2 минуты
Аааа, или только так? [[MyType alloc] initWithMyParam:"foo"].
Yandex
Объявления
29.07.2015, 02:30     Не создается объект. Ошибка "autorelease called without pool for object of class"
Ответ Создать тему
Опции темы

Текущее время: 15:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru