2010-08-20 145 views
1

我已经(在网站上有作者权限)将写入请求写入我的核心数据堆栈的包装类。可选参数

写它的人说它有“可选参数”,我想知道这是什么意思。

Anywho,静态方法被写成这样...

+(NSMutableArray *) searchObjectsFromContext 
    : (NSString*) entityName 
    : (NSPredicate*) predicate 
    : (NSString*) sortKey 
    : (BOOL) sortAscending 
    : (NSManagedObjectContext *) managedObjectContext 

我一直在运行,并通过“无”到不需要PARAMS。这是正确的事情吗?

另外,是否有意义的事实,冒号之间没有额外的方法文本?

感谢所有帮助

奥利弗

回答

3

如果在阅读文档或检查源代码时传递'nil'是否是正确的事情是不可能的。然而,这可能是正确的,因为这是大多数课程的标准行为。

创建没有关联文本的方法参数(如您在发布的代码中看到的)是完全合法的......但它也非常难看,并且失去了Obj-C冗长的所有好处。绝对没有理由写这样的代码,它只会让你的类更难使用。

+0

酷!谢谢! 我认为这可能只是懒惰,但不知道是否有一个我不知道的重要意义。 – Fogmeister 2010-08-20 15:28:41

+0

不能同意@kubi更多。当你深入Objective-C时,你会发现类似这样的方法令人反感。而且,这个方法真的不会给你带来可怕的数量。最后,从核心数据获取返回一个'NSMutableArray'的事实就是...... ***非常非常错误。这是从哪里来的?我很想看看最初的来源。 – 2010-08-20 16:55:24

+0

我同意最初写这种方法的人有一些严重危险的习惯。我会对使用我不明白的来自该网站的代码持怀疑态度。 – TechZen 2010-08-21 13:18:19

0

可选参数在VB(和一些其他语言)也有,但不是C#。 C#迫使你重载函数。

如果您愿意,您可以将“默认”值传递给可选参数。只要你知道这个功能如何响应,我不会看到这会如何伤害任何东西。

编辑:我刚刚读你的iphone标签....对不起!我不知道我的回答在这方面与你的相关程度如何

+0

谢谢, 包装内的函数处理各种变量,取决于它们是否有值我只是不确定术语“可选变量”。 我想他只是意味着你可以通过零而不是实际值。 谢谢! – Fogmeister 2010-08-20 15:13:11

+0

别担心,我认为无论如何都是相同的答案。我应该在标题/帖子中提出这个事实。 谢谢 – Fogmeister 2010-08-20 15:16:02