2011-03-01 76 views
0

这可能是一个荒谬的问题,但我在这里已经找不到它了。在Objective-C方法中声明两个参数的正确方法?

已经定义了一个协议委托方法:

- (void)myAddViewController:(MyAddViewController *)myAddViewController 
      loadGPS:(BOOL)gps loadCamera:(BOOL)camera; 

这基本上是确定GPS系统是否是要加载或摄像机应该被加载。

我通过调用这个方法:

[self.delegate myAddViewController:self loadGPS:YES loadCamera:NO]; 
// or alternatively 
[self.delegate myAddViewController:self loadGPS:NO loadCamera:YES]; 

在我的实现方法在委托我们:

- (void)myAddViewController:(MyAddViewController *)myAddViewController loadGPS:(BOOL)gps loadCamera:(BOOL)camera { 
.... .... ... 
if (gps) { 
     ...... 
    } 

    if (camera) { 
     // camera is ALWAYS nil and never seems to be set?! 
     ..... 

    } 

那么,为什么当我打电话委托方法与摄像机:是是相机 var总是零?它似乎永远不会承认我的第二个变种,但它不介意编译? :)

+3

我会尽量避免把BOOL当成零。确实,NO是一个设置为0的字符,通常相当于nil,但nil是用作指向对象的空指针。一个BOOL应该是YES或NO,并且在if语句中,使用BOOL就好像if(camera == YES)等。 虽然有趣的问题。好奇看看问题是什么。 – 2011-03-01 03:49:04

+0

您向代表发送消息的代码在哪里? – 2011-03-01 03:53:59

回答

0

这似乎是一种浪费,将两个互斥的布尔值传递给方法。

也许你会是两个委托方法更好:

[self.delegate myAddGPSViewController:self]; 
// or alternatively 
[self.delegate myAddCameraViewController:self]; 

因为当你射击的委托方法,你就已经知道你是否希望GPS或照相机反正。

+0

是的。我将把它转换到这种方法,但我仍然想知道如何正确地将两个变量传递给obj-c中的方法的答案。 – 2011-03-01 04:26:56

0

它可能有, 宣布再次 '相机' 变量, 可以粘贴你的方法

- (void)myAddViewController:(MyAddViewController *)myAddViewController loadGPS:(BOOL)gps loadCamera:(BOOL)camera {

\这里?