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

Программирование iOS/iPhone

Войти
Регистрация
Восстановить пароль
 
di_ingenio
98 / 6 / 1
Регистрация: 14.05.2013
Сообщений: 50
#1

Удаление объектов - Программирование iOS/iPhone

31.07.2013, 12:47. Просмотров 468. Ответов 0
Метки нет (Все метки)

Ситуация такая.
Объявлен массив вне класса NSArray *messageType;
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
NSArray *messageType;
@interface SMessage : NSObject
@property NSString *strOut;
@property NSArray *strIn;
 
-(id) init: (NSString*)strOut strIn:(NSArray*)strIn;
-(id) setDataStr:(NSString*)str;
-(NSString*)strOut;
-(void)setStrOut:(NSString *)value;
+(NSArray*) initArray;
 
@end
его реализация
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
@implementation SMessage
@synthesize strIn;
@synthesize strOut;
NSString *strData=@"";
 
-(id) init: (NSString*)strOutMessage strIn:(NSArray*)strInMessage
{
    strOut=strOutMessage;
    strIn=strInMessage;
    return [self init];
}
- (id) setDataStr:(NSString*)str
{
    strData=str;
}
- (NSString*)strOut
{
    if(strData!=NULL)
    {
        NSString *str=strData;
        strData=@"";
        return [NSString stringWithFormat:@"%@%@", strOut, str];
    }
    else
    {
        return strOut;
    }
}
 
-(id)setStrOut:(NSString *)value
{
    strOut=value;
    return self;
}
+ (NSArray*) initArray
{
    
  messageType=@[
    [[SMessage alloc] init:outMessage[1] strIn:@[inMessage[2],inMessage[3]]],
                      
    [[SMessage alloc] init:outMessage[2] strIn:@[inMessage[2],inMessage[4]]],
                      
    [[SMessage alloc] init:outMessage[3] strIn:@[inMessage[3],inMessage[5],inMessage[6]]],
    
    [[SMessage alloc] init:outMessage[4] strIn:@[inMessage[5],inMessage[6],inMessage[7]]],
    
    [[SMessage alloc] init:outMessage[5] strIn:@[@""]],
    
    [[SMessage alloc] init:outMessage[6] strIn:@[inMessage[2]]]
    ];
    
    return messageType;
}
@end
outMessage и inMessage - константные массивы строк.
в main.m вызываю инициализацию массива messageType;
Потом использую этот массив в методах ViewContoller. Если у объекта SMessage (например,
Objective-C
1
messageType[2]
) вызывать метод setDataStr, то при потом (при окончании метода, в котором был этот вызов), у этого объекта (messageType[2]) вызывается dealloc. Т.е. при повторном обращении вылетает
Objective-C
1
-[SMessage retain]: message sent to deallocated instance
Как это исправить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.07.2013, 12:47     Удаление объектов
Посмотрите здесь:

Проверка на удаление объектов Objective-C
Правильная имплементация объектов
Смена свойств объектов по нажатию на кнопку
xcode и qt creator: удаление строк в коде
Objective-C Пересечение объектов
Копирование объектов Objective-C
Objective-C Хранение WEAK объектов в массиве
Objective-C Последовательность создания объектов
Удаление ячеек после последней секции в UITableView
Objective-C Хранение объектов в массиве
SpriteKIT (Создаем массив объектов)
Удаление настроек и контента телефона приложения iOS

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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