如何在iPhone上的类之间传输值?

如何在iPhone上的类之间传输值?,iphone,class-design,data-transfer,transfer,Iphone,Class Design,Data Transfer,Transfer,我想将字符串从一个类发送到另一个类: 1) 在class1中,我添加了一个属性来保存字符串: @property (nonatomic, retain) NSString *str; 2) 以及发送回字符串的方法: -(NSString *)sendBackStr:(NSString *)strURL { NSString *str = [[NSString alloc] stringWithString:strURL]; return str; } 3) 在class2中

我想将字符串从一个类发送到另一个类:

1) 在class1中,我添加了一个属性来保存字符串:

@property (nonatomic, retain) NSString *str; 
2) 以及发送回字符串的方法:


-(NSString *)sendBackStr:(NSString *)strURL
{
    NSString *str = [[NSString alloc] stringWithString:strURL];
    return str;
}
3) 在class2中,我添加了一个属性来保存收到的字符串:

@property (nonatomic, retain) NSString *returnStr; 
4) 以及以下代码:

Class1 *c1 = [[Class1 alloc] init]; 
returnStr = [c1 sendBackStr:@"URL"];

但是程序在returnStr=[c1-sendbustsr:@“URL”处停止;有什么问题吗?

stringWithString:是需要发送到NSString类的消息,而不是类的实例(通过alloc返回)

正确的代码应为:

-(NSString *)sendBackStr:(NSString *)strURL
{
    return [NSString stringWithString:strURL];
}
您可能希望更多地熟悉指针的分配、保留和自动释放方面的习惯用法。如果出于某种原因希望分配此字符串并从sendBackStr:消息返回,则可能需要以下代码:

-(NSString *)sendBackStr:(NSString *)strURL
{
    return [[[NSString alloc] initWithString:strURL] autorelease];
}

stringWithString是返回自动释放字符串的类方法。你应该这样称呼它:

myProperty = [NSString stringWithString:strURL]; 
在这里,我假设您的属性进行了一次复制,以增加从stringWithString方法返回的自动释放字符串的保留计数。(alloc调用返回的对象的retain计数为1,并且不会自动删除。)通常为字符串提供copy属性而不是retain属性-您通常只需要自己的字符串副本,而不是对其他人拥有的字符串的共享引用

我也不明白的是,为什么要写这样的代码,除非它只是一个例子。在第二节课上,你所需要做的就是写作

returnStr = [NSString stringWithString:@"URL"];

alloc没有返回“您的类”的实例-它是[NSString alloc]。但是stringWithString是一种类方法。谢谢你的回答。是的,这只是我写的一个简单的测试,用来传递值。