Передача данных между объектами - PullRequest
0 голосов
/ 13 декабря 2011

У меня есть переменная в классе, NSNumber.Я хочу передать значение этой переменной другому классу переменной.Проблема в том, что я освобождаю объект первого класса и получаю сообщение об ошибке, когда пытаюсь установить значение второго класса var.

В C ++ это так легко сделать.Но вот с управлением памятью и указателями меня сильно смутило.

Код решения, для тестирования:

#import <Foundation/Foundation.h>
@interface A : NSObject 
{
    NSNumber *a;
}

@property (nonatomic, retain) NSNumber *a;

@end

int main(int argc, char *argv[]) 
{
    NSAutoreleasePool *p = [[NSAutoreleasePool alloc] init];

    A *instance1 = [[A alloc] init];
    A *instance2 = [[A alloc] init];

    [instance1 setA:[NSNumber numberWithFloat:5.43f]];

    instance2.a = [instance1.a copy];
    [instance1 release];

    NSLog(@"Valor de la que sigue viva, parte2: %@", instance2.a);


    [instance2 release];
    [p release];
    [pool drain];

    return 0;
}

1 Ответ

2 голосов
/ 13 декабря 2011

Вы должны использовать свойство retain или copy переменную экземпляра:

@interface A {
 NSNumber *a;
}

@property (nonatomic, retain) NSNumber *a;
@end

...
A *instance1 = [[A alloc] init];
A *instance2 = [[A alloc] init];

instance1.a = instance2.a;
//or
instance2.a = [instance1.a copy];

Прочитайте некоторые документы об управлении памятью с сохранением счета, которое использует Objective-C.

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