Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.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
xcode/objective-c调用实例方法_Objective C_Class_Methods_Instance - Fatal编程技术网

xcode/objective-c调用实例方法

xcode/objective-c调用实例方法,objective-c,class,methods,instance,Objective C,Class,Methods,Instance,此问题已解决,感谢您的帮助 因此,我试图通过编写一个应用程序并查找我需要知道的内容来自学xcode编程iphone/ipod应用程序。这个网站可能是最大的帮助,但这次我没能找到我的问题的答案,可能是因为它太简单了,任何一个有书的人都不会问 我正在尝试创建一个应用程序,可以从25张牌中随机抽取10张牌。我创建了一个名为Dealer的类,该类包含所有卡和一个数组,该数组保存对每个卡的引用作为成员数据,以及一个从数组中返回卡并将其移除的方法。这是我的方法代码 - (NSString *)drawDom

此问题已解决,感谢您的帮助

因此,我试图通过编写一个应用程序并查找我需要知道的内容来自学xcode编程iphone/ipod应用程序。这个网站可能是最大的帮助,但这次我没能找到我的问题的答案,可能是因为它太简单了,任何一个有书的人都不会问

我正在尝试创建一个应用程序,可以从25张牌中随机抽取10张牌。我创建了一个名为Dealer的类,该类包含所有卡和一个数组,该数组保存对每个卡的引用作为成员数据,以及一个从数组中返回卡并将其移除的方法。这是我的方法代码

- (NSString *)drawDominion
{
    //some code here

    NSString *current = [dominionDeck objectAtIndex:i];

    //more irrelevant code

    return current;
}
然后在我的视图控制器的一个操作方法中,我创建了一个类的对象,并尝试调用drawDominion,但它给了我一个错误“Receiver type‘Dealer’for instance message没有声明一个带有选择器‘drawDominion’的方法”

- (IBAction) Dominion
{
    Dealer *deal = [[Dealer alloc] init];
    NSString *testStr = [deal drawDominion];
}
这是我试着打电话给drawDominion的代码。我不知道我做错了什么,我昨天刚接了xcode,从那以后这是一场艰苦的战斗。谢谢你能提供的任何帮助

关于你的一些答复:
我没有做经销商。但我在现有的viewController中为它提供了一个接口。这可能是我的问题的原因吗?它在已经定义的类的@end之后开始,看起来是这样的

@interface Dealer : NSObject

-(NSString *) drawDominion:(NSString**)array;
-(NSString *) drawIntrigue:(NSString**)array;
-(NSString *) drawBoth:(NSString**)array;

@end

另外,我想我忘了将实例变量放在.h中,但编译器似乎没有对此抱怨。我应该把它们放在那里吗?

您是否已将drawDominion方法的原型添加到Dealer.h中?您应该

@interface Dealer : NSObject {
  // instance variables here
}
-(NSString*)drawDominion;
@end
在Dealer.h中
然后,当您#导入“Dealer.h”时,编译器知道Dealer将有一个drawDominion方法。

您实际在哪里调用这些方法来绘制字符串?您是否在Dealer.h文件中声明了该方法?您是否将Dealer.h文件导入了viewController?此代码应该只起作用,但有许多地方需要检查(初始化器、gui等)。是否尝试记录
testStr
?在drawDomain方法中,确保执行[[current retain]autorelease];然后再将其从domainDeck中删除。否则,如果domainDeck是最后一个引用该对象的对象,它将被销毁,并且您将返回一个错误的指针。如果您使用ARC,这不是问题。好吧,要将卡从数组中取出,我只是将其位置设置为零。我确信我的代码不是最优雅的方法继续,但这是我使用xcode的第二天。将数组中的一个位置更改为零不会导致内存泄漏,是吗?我没有做经销商。h但我在现有的viewController中为它提供了一个接口。h这可能会导致我的问题吗?它在已在其中定义的类的@end之后开始,并且看起来像这样。哎哟,我把评论搞糟了,我把答案编辑到了我原来的帖子里。谢谢你的帮助,原来我在更改方法时忘记了把参数从.h定义中去掉。很抱歉浪费了你的时间。