在Objective-C2.0中,是否可以在参数可选的情况下创建一个方法?也就是说,可以进行如下方法调用:

[aFraction print];

除此之外:

[aFraction print: someParameter];

在同一个节目中.

苹果的Objective-C 2.0 Programming Language指南将Obj-C与Python进行了对比,似乎说这是不允许的.我还在学习,我想确定.如果可能的话,那么语法是什么,因为我的第二个代码示例不起作用.

Update:

header

-(void) print;
-(void) print: (BOOL) someSetting; 

implementation

-(void) print {
    [self print:0];
}

-(void) print: (BOOL) someSetting {
    BOOL sv;
    sv = someSetting;

    if ( sv ) {
        NSLog(@"cool stuff turned on");
    }
    else {
        NSLog(@"cool stuff turned off");
    }
}

the relevant program lines

    ...
    printParamFlag = TRUE;

// no parameter
    [aCodeHolder print];

// single parameter
    [aCodeHolder print:printParamFlag];
    ...

我真不敢相信这管用.有什么理由我不该这么做吗?

推荐答案

可以声明多个方法:

- (void)print;
- (void)printWithParameter:(id)parameter;
- (void)printWithParameter:(id)parameter andColor:(NSColor *)color;

在实现中,您可以执行以下操作:

- (void)print {
    [self printWithParameter:nil];
}

- (void)printWithParameter:(id)parameter {
    [self printWithParameter:nil andColor:[NSColor blackColor]];
}

Edit:

请不要同时使用printprint:.首先,它没有指明参数是什么,其次,没有人(ab)以这种方式使用Objective-C.大多数框架都有非常清晰的方法名称,这是Objective-C编程如此轻松的原因之一.普通的开发人员不希望使用这种方法.

还有更好的名字,例如:

- (void)printUsingBold:(BOOL)bold;
- (void)printHavingAllThatCoolStuffTurnedOn:(BOOL)coolStuff;

Objective-c相关问答推荐

按住自定义 UIButton 时更改深灰色突出显示的 colored颜色 ?

从 C# 到 Objective C 会有多大的飞跃

NSArray 添加元素

UIGestureRecognizer 是否适用于 UIWebView?

使用 ARC,什么更好:alloc 或 autorelease 初始化程序?

当前时间是 HH:MM:SS am/pm 格式吗?

自动布局和按下时隐藏底栏

处理 ARC 中的指针对指针所有权问题

如果安装了应用程序,如何以编程方式判断?

如何调整 UIModalPresentationFormSheet 的大小?

如何删除应用程序指定目录中的所有文件?

进入编辑模式时动画自定义绘制的 UITableViewCell

如何确定 UICollectionView flowLayout 中单元格之间的间距

遍历 NSString 中所有字符的最有效方法

主队列上的 performSelectorOnMainThread: 和 dispatch_async() 有什么区别?

在 Objective-C 中_和touch之间的区别

Objective-c 协议前向声明

如何在不管理 UDID 和重新编译的情况下无线分发 ios 应用程序

如何检测父视图控制器中模态视图控制器的解除?

找出用户是否按下了 uinavigationcontroller 中的后退按钮?