是否有可用于描述人的Cocoa初始化器?

Mos*_*she 4 cocoa objective-c naming-conventions

我很想知道是否有任何Cocoa框架包含一个可能被误认为与人类打交道的初始化程序.明显的方法,(虽然我不知道它们是否或存在于何处)是initWithAge,或initWithName.

是否有任何真正聪明的Cocoa初始化器可能适用于人?

编辑:

我当然不是在问new运营商.这是你在琐事活动中可能遇到的一个问题,但我对此非常认真.它可以客观和明确地回答.是否有任何巧妙命名的Cocoa初始化器可以被理解为指人?

Dav*_*ong 14

所以,我你问的是:

是否存在用于初始化描述人物的对象的既定惯例?

所以,我要做的第一件事是通过框架标题查找"person"的引用:

$ cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks
$ grep -r 'Person\b' . | edit
Run Code Online (Sandbox Code Playgroud)

(是的,我默认查看Mac SDK.在iOS SDK中查看将留给读者练习)

这导致381次点击,主要是重复信息.但有一些有趣的点击:

  • ABPerson 来自AddressBook.framework
  • EKParticipant 来自EventKit
  • PSAuthor 来自PubSub

不幸的是,这些结果都没有初始化器,因为它们主要用于与现有Person对象进行交互,而不是用于创建新对象.例外是-[ABPerson(ABPerson_vCard) initWithVCardRepresentation].这可能没什么帮助.

所以我们需要继续挖掘.我们怎么能描述一个人?"人"?"会员"?"个人"?"顾客"?所有这些都是非常好的东西.

然后我记得有一个隐藏在OS X SDK深处的模糊框架,没有人真正谈过,称为Collaboration.framework:

Collaboration框架是一组Objective-C类,允许开发人员监视身份及其属性.(参考)

看起来很有希望!事实上,在这里看到真正有趣的课程:CBIdentity.阿CBIdentity"用于访问标识的属性".有很多不同的方法来创建一个身份,但我喜欢这种模式,我建议这样做:

"MBIdentity"课程将定义规范识别一个人的方法.所以,你可以有-initWithSocialSecurityNumber:-initWithName:-initWithBirthLocation:time:等此类的目的是要建立足以识别个人属性的集合.

然后你的"MBPerson"类会有一个-initWithIdentity:方法MBIdentity.然后,人将具有其组成身份的特征.

我想在这里要认识到的重要一点是,有许多方法可以建立身份(因此有许多属性/初始化器MBIdentity).但是一旦你建立了一个身份,只有一个拥有这个身份(因此你的Person班级只有一个initWithIdentity:方法).

  • 在克里斯托弗埃克莱斯顿作为医生的不朽的话:神奇! (3认同)