如何在iPhone上的类间传输值?
我想从一个类发送一个字符串到其他:如何在iPhone上的类间传输值?
1)在Class,我添加了一个属性来保存字符串:
@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 sendBackStr:@ “URL”];任何关于它有什么问题的想法?
stringWithString是一个类方法返回一个autoreleased字符串。你应该调用它像这样:
myProperty = [NSString stringWithString:strURL];
在这里,我假定你的财产做一个副本,来增加上是一个从stringWithString方法返回的字符串自动释放的保留计数。 (从alloc调用返回的对象的保留计数为1,而不是自动释放。)通常给字符串复制属性而不是保留字段 - 通常只需要自己的字符串副本,而不是共享引用由别人拥有的字符串。
我也不明白为什么你写这样的代码,除非它只是一个例子。在第2课中,你需要做的是写
returnStr = [NSString stringWithString:@"URL"];
stringWithString:是需要发送到NSString类的消息,而不是您的类的实例(通过alloc返回)。
正确的代码应该是:
-(NSString *)sendBackStr:(NSString *)strURL
{
return [NSString stringWithString:strURL];
}
你可能想familarize自己更了解身边的分配,保留和指针的自动释放成语。如果你想的Alloc此字符串出于某种原因,并从sendBackStr退回它的消息,那么你可能会想这样的代码:
-(NSString *)sendBackStr:(NSString *)strURL
{
return [[[NSString alloc] initWithString:strURL] autorelease];
}
该alloc没有返回“你的类”的实例 - 它是[NSString alloc]。但是stringWithString是一个类方法。 – 2009-03-02 18:08:32
感谢您的回答。是的,这只是我写的一个简单的测试来传递价值。 – 2009-03-03 03:09:01