Iphone 将值传递给委托方法
我试图将一个值传递给委托中的一个方法,并返回一个Iphone 将值传递给委托方法,iphone,objective-c,ios,delegates,Iphone,Objective C,Ios,Delegates,我试图将一个值传递给委托中的一个方法,并返回一个NSString值。由于某些原因,我在委托错误中找不到属性。我非常感谢你的帮助。这是我的密码: 代理.h - (NSString*) getSoundFilePath:(int)pageNumber; delegate.m -(NSString*) getSoundFilePath:(int)pageNumber{ switch (pageNumber) { case 1: return sound
NSString
值。由于某些原因,我在委托错误中找不到属性。我非常感谢你的帮助。这是我的密码:
代理.h
- (NSString*) getSoundFilePath:(int)pageNumber;
delegate.m
-(NSString*) getSoundFilePath:(int)pageNumber{
switch (pageNumber) {
case 1:
return soundFilePathPage1;
break;
case 2:
return soundFilePathPage2;
break;
case 3:
return soundFilePathPage3;
break;
case 4:
return soundFilePathPage4;
break;
case 5:
return soundFilePathPage5;
break;
case 6:
return soundFilePathPage6;
break;
}
return nil;
}
int page = 1;
NSString *audioFilePath = appDelegate.getSoundFilePath:page;
//that's where i get the error
app.m
-(NSString*) getSoundFilePath:(int)pageNumber{
switch (pageNumber) {
case 1:
return soundFilePathPage1;
break;
case 2:
return soundFilePathPage2;
break;
case 3:
return soundFilePathPage3;
break;
case 4:
return soundFilePathPage4;
break;
case 5:
return soundFilePathPage5;
break;
case 6:
return soundFilePathPage6;
break;
}
return nil;
}
int page = 1;
NSString *audioFilePath = appDelegate.getSoundFilePath:page;
//that's where i get the error
你应该寻找一个客观的c介绍 正确的路线是
NSString *audioFilePath = [appDelegate getSoundFilePath:page];
你应该寻找一个客观的c介绍 正确的路线是
NSString *audioFilePath = [appDelegate getSoundFilePath:page];
这是一个很好的错误。您的应用程序代理没有名为
getSoundFilePath
的属性,它有一个名为getSoundFilePath:
的方法。即使有,也不能将参数传递给属性。正如答案中所述,您应该真正阅读objective-C的一些介绍。还要注意,方法名称中的前导“get”在ObjC中有特定的含义(它意味着该方法使用一个将用返回值更新的指针)。此方法的正确名称是soundFilePathForPageNumber:
。这是一个非常好的错误。您的应用程序代理没有名为getSoundFilePath
的属性,它有一个名为getSoundFilePath:
的方法。即使有,也不能将参数传递给属性。正如答案中所述,您应该真正阅读objective-C的一些介绍。还要注意,方法名称中的前导“get”在ObjC中有特定的含义(它意味着该方法使用一个将用返回值更新的指针)。这个方法的正确名称是soundFilePathForPageNumber:
。啊,当然。谢谢你。我说我使用的语法是“setter”语法,而方括号本质上是“getter”语法,对吗?不,getter和setter都是通过括号访问的,因为它们是方法。通过class.property,可以不使用setter或getter直接访问属性。由于您声明了一个方法,因此无法将其作为属性访问。@实际上,通过class.property
您仍然在使用setter/getter。这只是编写方法调用的较短方法。一般来说,getter方法可以与点语法一起使用,即使它们没有声明为属性。@Sulthan的观点非常重要object.property
只是编写[object property]
的另一种方式。它不是指“读取属性”。它不是指“读取ivar”。它是指“传递消息并返回结果”。没有任何规则表明请求的方法实际返回ivar的值。然而,在任何可能产生副作用的东西上使用点符号(即使是合法的)是不好的风格。啊,当然。谢谢你。我说我使用的语法是“setter”语法,而方括号本质上是“getter”语法,对吗?不,getter和setter都是通过括号访问的,因为它们是方法。通过class.property,可以不使用setter或getter直接访问属性。由于您声明了一个方法,因此无法将其作为属性访问。@实际上,通过class.property
您仍然在使用setter/getter。这只是编写方法调用的较短方法。一般来说,getter方法可以与点语法一起使用,即使它们没有声明为属性。@Sulthan的观点非常重要object.property
只是编写[object property]
的另一种方式。它不是指“读取属性”。它不是指“读取ivar”。它是指“传递消息并返回结果”。没有任何规则表明请求的方法实际返回ivar的值。然而,在任何可能产生副作用的东西上使用点符号(即使是合法的)是不好的风格。