Iphone 如何在函数中传递指针并得到结果?

Iphone 如何在函数中传递指针并得到结果?,iphone,objective-c,c,function,Iphone,Objective C,C,Function,请参阅以下代码: - (BOOL)postAction :( NSString*) url params:(NSDictionary*) params bodySize:(NSNumber**)bodySize { ... int size = 1999; NSNumber* value =[[NSNumber alloc] initWithInt:size]; bodySize = &value; ...} 使用以下功能: NSNumber* size ; [

请参阅以下代码:

- (BOOL)postAction :( NSString*) url  params:(NSDictionary*) params  bodySize:(NSNumber**)bodySize
{
... 
int size = 1999;

NSNumber* value =[[NSNumber alloc] initWithInt:size];


bodySize =  &value;


 ...}
使用以下功能:

NSNumber* size ;  
[self postAction:@"http://webserver/ss.php" params:params bodySize:&size];



// can not got the size value at all…


 int i = [size intValue]; 
//will throw nil exception !
我的问题是如何更正上面的代码

非常感谢你的帮助

关于

我想你想要这个:

//bodySize =  &value;
*bodySize = value;

理想情况下,在取消引用指针之前,应始终检查指针:

If ( bodySize )
    *bodySize = value;

我同意以上两个答案。更清楚地说,NSNumber是一个对象(不同于NSInteger或NSInteger)。因此,您应该直接将指针指向该对象。

如果您在iOS或Mac OS X中使用“按引用传递”,则可能是做错了。 说真的——通过引用传递是一种非常罕见的模式。它几乎完全保留给API中的
(NSError**)

并不是说没有理由使用按引用传递,但事实并非如此

特别是,如果您需要返回一个
NSNumber
,请返回它

- (NSNumber *) foo;
如果该方法返回
nil
,则与返回
BOOL
NO
一样好。它使您能够遵循使用
NSError
的常见模式:

- (NSNumber *) foo: (NSError **) error;

你不能让它返回
NSNumber
对象吗?我不知道你是否已经看到了它,但是如果你正在编写这样一个方法,你真的应该看看免费的ASIHttpRequest库(实际上相当多的类),它可以让你轻松地发布数据;通过引用传递是非常罕见的正确编写的iOS应用程序。@bbum这是不正确的。在整个苹果自己的代码中,
NSError
s是通过引用传递的,还有一些其他实例是通过
NSScanner
传递的;这将是一个罕见的、特定的用例。。。当我说“罕见”时,我的意思是“这种模式非常罕见”,并不是说,一旦决定,特定的模式将不会被广泛使用。在整个框架API中,还有六到十二种通过引用传递的其他用途?(谢谢你的评论,当然,这很有解释力)。