Objective c 有没有可以用来描述一个人的可可初始值设定项?

Objective c 有没有可以用来描述一个人的可可初始值设定项?,objective-c,cocoa,naming-conventions,Objective C,Cocoa,Naming Conventions,我很好奇,是否有任何Cocoa框架包含一个可能被误认为是与人类打交道的初始值设定项。显而易见的方法(尽管我不知道它们是否存在或存在于何处)是initWithAge,或initWithName 是否有任何听起来很聪明的可可初始值设定者可以适用于人们 编辑: 我当然不是在问新的操作员。这是你在琐事活动中可能遇到的问题,但我对此绝对认真。可以客观、肯定地回答。有没有一些名字巧妙的可可初始化者可以理解为是指人的?奇怪的问题。。。嗯 initWithKind: // nice, nasty... init

我很好奇,是否有任何Cocoa框架包含一个可能被误认为是与人类打交道的初始值设定项。显而易见的方法(尽管我不知道它们是否存在或存在于何处)是
initWithAge
,或
initWithName

是否有任何听起来很聪明的可可初始值设定者可以适用于人们

编辑:


我当然不是在问新的操作员。这是你在琐事活动中可能遇到的问题,但我对此绝对认真。可以客观、肯定地回答。有没有一些名字巧妙的可可初始化者可以理解为是指人的?

奇怪的问题。。。嗯

initWithKind: // nice, nasty...
initWithUser: // username
initWithColor: // black, white
initWithStyle: // cool, geeky
initWithTitle: // Dr
initWithSize: // big, small
合成版本

initWithTitle:@"Dr" message:@"You are crazy"
initWithTitle:@"Your Honour" style:@"serious" handler:@"wife"
虽然这些是来自BlockKit的,所以它们可能不算…

所以,我想你是在问这个问题:

是否有一个用于初始化描述人的对象的既定约定

因此,我要做的第一件事是grep通过框架标题查找对“person”的引用:

(是的,我默认在Mac SDK中查找。在iOS SDK中查找将留给读者作为练习)

这导致我点击了381次,大部分是重复信息。但有几个有趣的热门话题:

  • ABPerson
    来自AddressBook.framework
  • EKParticipant
    来自EventKit
  • PSAuthor
    来自PubSub
不幸的是,这些结果都没有初始值设定项,因为它们主要用于与现有Person对象交互,而不是创建新对象。例外情况是
-[ABPerson(ABPerson\u vCard)initwithvcard表示]
。这可能没有什么帮助

所以我们需要继续挖掘。我们还能怎样描述一个人呢?“人”?“成员”?“个人”?“顾客”?所有这些都是值得寻找的好东西

然后我想起了在OSX SDK的深处有一个鲜为人知的框架,叫做Collaboration.framework:

协作框架是一组Objective-C类,允许开发人员监视身份及其属性。()

看起来很有希望!事实上,这里有一个非常有趣的类:
CBIdentity
CBIdentity
“用于访问标识的属性”。有很多不同的方法来创建身份,但我喜欢这种模式,我建议这样做:

“MBIdentity”类将定义规范地识别一个人的方法。因此,您可以使用
-initWithSocialSecurityNumber:
-initWithName:
-initWithBirthLocation:time:
,等等。此类的目的是建立足以识别个人的属性集合

然后,“MBPerson”类将有一个
-initWithIdentity:
方法,该方法采用
MBIdentity
。然后,这个人将呈现出其沉稳的身份特征


我想这里要认识到的重要一点是,有许多方法可以建立身份(因此,
MBIdentity
上有许多属性/初始值设定项)。但是一旦你建立了一个身份,只有一个人有这个身份(因此你的
Person
类只有一个
initWithIdentity:
方法)。

你的意思是说cocoa中有没有新的操作符类型的方法?绝对没有问新方法。我必须知道是什么驱使你问这个问题。@Riley,哈哈!我正在更新我为WWDC 2012制作的名片。它有
initWithAwesome
。我想要新鲜的东西。我想说,“好吧,现在,我已经看到了一切,”但你的问题当然证明我永远不会。我希望它们(名片)很酷。用克里斯托弗·埃克莱斯顿(Christopher Eccleston)作为医生不朽的话来说:太棒了!
$ cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks
$ grep -r 'Person\b' . | edit