2014-09-04 75 views
-1

的对象没有找到我新的目标C和iOS目标C/iOS版 - 物业类型上

我试图得到一个简单的方法工作,但我得到的一个问题。

声明和实现:

WebServiceCall.h

- (void) setwebServiceUrlStr: (NSMutableString *) newUrl; 

WebServiceCall.m

- (void) setwebServiceUrlStr: (NSMutableString *) newUrl 
{ 
    webServiceUrlStr = newUrl; 
    NSLog(@"Setting webServiceUrlStr = %@",webServiceUrlStr); 
} 

在随后WebServiceCall.m我尝试这样做:

NSString *sUrl = [defaults objectForKey:@"sUrl"]; 
[self.setwebServiceUrlStr: sUrl]; 

最后一行产生以下错误:

住宅“setwebServiceUrlStr”上类型为“WebServiceCall”

,如果我从声明中删除了参数,我没有得到错误

+2

将最后一行更改为[self setwebServiceUrlStr:sUrl]; (删除点) – sha 2014-09-04 14:18:36

回答

0

现在你只有一个名为setwebServiceUrlStr:的方法。你还没有申报财产。要声明一个属性,你可以使用:

@property (nonatomic, strong) NSMutableString *webServiceUrlStr; 

一旦你拥有了它宣称,您的二传手会自动合成,你不需要重写它,你有(即,你现在可以删除方法)。你会覆盖它的唯一原因是如果你需要不同的功能从默认设置相应的实例变量。

属性的默认setter和getter是:propertyName(getter)和setPropertyName:(setter)。因此,要设置属性,您可以拨打[self setPropertyName:var]使用不包含单词“set”的点符号:self.propertyName = var

所以,你的代码看起来像:

NSString *sUrl = [defaults objectForKey:@"sUrl"]; 
self.webServiceUrlStr = sUrl; 

注:我建议不使用可变的字符串在这里,只是宣称你的财产是一个NSString代替:

@property (nonatomic, copy) NSString *webServiceUrlStr; 

除非你明确需要改变属性(非常罕见),你不应该让它变得可变。

-1

你可以反对未找到不要将该属性命名为'new'。作为参数应该没问题。

@sha指出了错误。

应该

self.webServiceUrlStr = sUrl; 

,如果你正在访问来自其他类的属性。它应该是这样的

WebServiceCall *webCall = [[WebServiceCall alloc] init] 

    [webCall SetWebServiceUrlStr:sUrl]; 
    or 
    webCall.webServiceUrlStr = sUrl; 
+0

这是错误的。'new'只有属于方法名称的一部分才具有特殊含义,而不是参数名称。请参阅sha的评论以获取答案。 – 2014-09-04 14:24:19

+0

变量的名称在这里没有关系。问题是属性没有被正确使用。 – colinbrash 2014-09-04 14:24:56

+0

是的,没错。我想念读了这个问题。我正在考虑命名属性...作为参数应该没问题。我会改变它 – 2014-09-04 14:28:43