首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSInvocation使应用崩溃

NSInvocation使应用崩溃
EN

Stack Overflow用户
提问于 2010-06-14 17:48:51
回答 3查看 964关注 0票数 0

我使用NSInvocation的方法如下:

在我的init中,我在我的viewDidLoad中写道:

代码语言:javascript
复制
SEL mySelector;
mySelector = @selector(initParsersetId:type:);

NSMethodSignature * sig = nil;
sig = [[self class] instanceMethodSignatureForSelector:mySelector];

myInvocation = nil;
myInvocation = [NSInvocation invocationWithMethodSignature:sig];
[myInvocation setTarget:self];
[myInvocation setSelector:mySelector];

我这样叫它:

代码语言:javascript
复制
Idea *tempIdea = [[Idea alloc]init];
tempIdea = [genericArray objectAtIndex:indexPath.row];
idea.ideaId = tempIdea.ideaId;
[tempIdea release];

NSNumber *_id_ = [NSNumber numberWithInt:idea.ideaId];
[myInvocation setArgument:_id_ atIndex:2];  //CRASHING AT THIS LINE

我的应用程序在指定的行处崩溃。有谁能帮帮我吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-06-15 00:25:18

从您的代码中看不是很清楚;但是,我看到了一些可疑的东西。希望它能为您提供一些有用的提示。

首先,我没有看到您保留实例(自动从[NSInvocation释放...)。由于来自NSInvocation的实例...是自动释放的,那么在viewDidLoad事件之后,您的类级变量myInvocation将不会保留它。

代码中的第二件事是选择器是一种定制的构造函数,以init开头……我不确定您是否可以在同一实例中调用该事件。另一点是,如果你的初始化...要调用的方法返回self吗?应该是这样的。

您可以使用NSLog函数在选择器事件中输出一些消息。来自NSLog的所有消息都将出现在您的XCode的输出控制台中。

票数 0
EN

Stack Overflow用户

发布于 2010-06-14 21:49:20

我已经找到了答案,但我不确定是怎么回事。实际上,最初我是用viewDidLoad编写所有初始化代码,并通过传递不同的参数来重用NSInvocation对象,因为NSInvocation是一个可变对象。它没有起作用。然后,我编写了一个包含所有初始化代码的方法,并在每次使用NSInvocation对象时调用该方法,它起作用了……

票数 0
EN

Stack Overflow用户

发布于 2011-08-01 09:49:05

您需要提供setArgument:要传递的参数的地址,而不是参数本身:

代码语言:javascript
复制
[myInvocation setArgument:&_id_ atIndex:2];

代码语言:javascript
复制
[myInvocation setArgument:_id_ atIndex:2];

另外,你确定你的函数以NSNumber作为第一个参数吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3036264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档