Доступ к NSMutableData из другого класса

Хорошо, я объявил NSMutableData в .h класса 1 следующим образом

NSMutableData * dataResponse;

@property (сильный, неатомарный) NSMutableData * dataResponse;

в .m класса 1 у меня есть @synthezie dataResponse, а затем я передаю ему некоторые данные в функции.

Я хочу получить доступ к dataResponse в классе 2 с теми данными, которые я назначил ему в функции.

Как я могу получить данные из dataResponse в классе 2? Любая помощь была бы замечательной.


person Popeye    schedule 13.12.2011    source источник
comment
Я думаю, вам понадобится указатель на этот экземпляр класса instance. Как вы его получите, зависит от вас.   -  person Hot Licks    schedule 13.12.2011


Ответы (2)


Вы можете использовать вспомогательный класс для доступа к массиву в другом классе. Создайте в проекте файл NSObject. Я назвал это проходным классом

В вашем PassingClass.h

#import <Foundation/Foundation.h>

@interface PassinClass : NSObject
{
  NSMutableData *dataResponsetoPass;
}
+(PassinClass*)sharedString;


-(void)setdataResponsetoPass:(NSMutableData*)data;
-(NSMutableData*)getDataResponse;

В вашем PassinClass.m

#import "PassinClass.h"

@implementation PassinClass
@synthesize dataResponsetoPass;
static PassinClass*sharedString;

+(PassinClass*)sharedString
{
 if(!sharedString)
 {
    sharedString=[[PassinClass alloc]init];
  }

  return sharedString;
}


-(void)setdataResponsetoPass:(NSMutableData*)data
{
  dataResponsetoPass=data;
}
-(NSMutableData*)getDataResponse;
{
   return dataResponsetoPass;
}

В вашем class1.h создайте экземпляр этого вспомогательного класса.

#import "PassinClass.h"
{
  PassinClass*pClass;
}

В вашем class1.m установите данные, используя

pClass=[PassinClass sharedString];
[pClass setdataResponsetoPass:Your Data];

В вашем class2.m получите данные, используя

pClass=[PassinClass sharedString];
[pClass getDataResponse];

NSLog the [pClass getDataResponse ], чтобы проверить, если все прошло хорошо, вы сможете передать данные ответа из класса 1 в класс 2.

person iNoob    schedule 13.12.2011
comment
По сути, это синглтон - выполните поиск по термину, и вы найдете множество шаблонов для этого. Другой распространенный способ обработки глобальных данных - использование свойства в вашем объекте AppDelegate. Конечно, лучше по возможности передавать адрес вашего объекта в качестве параметра. - person Hot Licks; 13.12.2011
comment
@HotLicks да, вы правы, это синглтон, я тоже сделал это через объект appdelegate, но после некоторых исследований, который был упомянут как нечистый метод. Разве этот фрагмент кода не сделает свою работу? Или есть методы получше? - person iNoob; 13.12.2011
comment
Нет ничего нечистого в использовании AppDelegate. Есть некоторые снобы, которые не любят его использовать, но в основном потому, что у них нет дисциплины, чтобы поддерживать его должным образом. Что касается синглтонов, так как я почти никогда их не использую, я не остановился на предпочтительном шаблоне. - person Hot Licks; 13.12.2011
comment
Хорошо, спасибо, я прочитал несколько ответов, что AppDelegate предназначен только для основных функций приложений и что его не следует беспокоить передачей строк, данных и т. Д. Из одного класса в другой. - person iNoob; 13.12.2011

Создайте экземпляр класса и используйте метод -mutableByes. Если вам все еще нужна дополнительная информация, ознакомьтесь со справкой по классу для NSMutableData, справа здесь

person Monkeyanator    schedule 13.12.2011
comment
Создание нового экземпляра класса не вернет уже установленное значение, а вместо этого вернет nil. - person Hot Licks; 13.12.2011
comment
Я не верю, что мой ответ заслужил голоса против ... если бы вы знали, как использовать ответ в своих интересах, вы могли бы решить свою проблему: P - person Monkeyanator; 26.12.2011