Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 将值传递给委托方法_Iphone_Objective C_Ios_Delegates - Fatal编程技术网

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的值。然而,在任何可能产生副作用的东西上使用点符号(即使是合法的)是不好的风格。