在Objective-C方法中声明两个参数的正确方法?

时间:2011-03-01 03:43:00

标签: iphone objective-c ios4

这可能是一个荒谬的问题,但我还没有在这里找到它。

定义了协议委托方法:

- (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?!
      .....

    }

那么为什么当我用Camera调用委托方法时:是摄像头 var总是为零?似乎它永远不会识别我的第二个变量而它不介意编译? :)

2 个答案:

答案 0 :(得分:0)

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

使用两种委托方法也许你会更好:

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

因为当你发射委托方法时,你已经知道你是否想要GPS或相机。

答案 1 :(得分:0)

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

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

\这里吗?