【问题标题】:Accessing NSMutableData from another class从另一个类访问 NSMutableData
【发布时间】:2011-12-13 11:52:11
【问题描述】:

好的,我已经在 1 类的 .h 中声明了 NSMutableData,如下所示

NSMutableData *dataResponse;

@property (strong, nonatomic) NSMutableData *dataResponse;

在第 1 类的 .m 中,我有 @synthezie dataResponse,然后我在函数中给它一些数据。

我想使用我在函数中分配给它的数据访问类 2 中的 dataResponse。

如何从第 2 类的 dataResponse 中获取数据?任何帮助都会很棒。

【问题讨论】:

  • 呃,我想你需要一个指向那个类instance的指针。如何获得它取决于您。

标签: objective-c nsmutabledata


【解决方案1】:

您可以使用辅助类来访问不同类中的数组。在项目中创建一个 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 [pClass getDataResponse ] 进行检查,如果一切顺利,您应该能够将响应数据从类 1 传递到类 2。

【讨论】:

  • 这基本上是一个“单例”——搜索这个词,你会发现很多“模式”。处理全局数据的另一种常用方法是使用 AppDelegate 对象中的属性。当然,在可能的情况下,最好将您的对象地址作为参数传递。
  • @HotLicks 是的,你是对的,这是一个单例,我也通过 appdelegate 对象完成了它,但经过一些研究,被称为“不干净”的方法。这段代码不会完成他的工作吗?或者有没有更好的方法?
  • 使用 AppDelegate 并没有什么“不干净”的地方。有一些势利小人不喜欢使用它,但主要是因为他们没有正确维护它的纪律。就单例而言,由于我几乎不使用它们,我还没有确定首选的“模式”。
  • 好的,谢谢,我已经阅读了多个答案,AppDelegate 仅适用于应用程序的核心功能,它不应该被字符串、数据等从一个类传递到另一个类所困扰。跨度>
【解决方案2】:

创建类的实例并使用 -mutableByes 方法。如果您仍需要更多信息,请查看 NSMutableData 的类参考,对 here

【讨论】:

  • 创建一个新的类实例不会返回已经设置的值,而是nil。
  • 我不相信我的回答值得投反对票......如果你知道如何利用你的优势,你可以解决你的问题:P
猜你喜欢
  • 2019-08-03
  • 2011-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多