Cocoa 是什么?
- 格式:pdf
- 大小:809.50 KB
- 文档页数:24
可口可乐成功的关键因素可口可乐是上个世纪以来最成功的品牌公司之一,这一点你无法否认吧!可口可乐为什么会成功,它这么出名是因为什么呢?下面是店铺精心为大家搜集整理的可口可乐成功的关键因素,大家一起来看看吧。
可口可乐成功的关键因素1:经过市场检验的独特配方1820年代,古柯酒(基本成分为可乐、酒精和可卡因)正风靡一时。
曾在内战时期为邦联上校服役的约翰·彭伯顿(John Pemberton)正在开发新的古柯酒配方。
1886年,亚特兰大发布禁酒令,强制要求饮料制造商们必须生产不含酒精的饮料。
彭伯顿让他的侄子刘易斯·纽曼将根据新配方而调配出的早期饮料样品带到一家地方药店里,请那里的人们品尝。
此后,纽曼给了他各种各样的反馈。
年底时,彭伯顿已经改造出了一份贴合消费者口味的独特配方。
这张最初的配方至今仍被保存在亚特兰大。
1903年,人们从可乐的原配方中剔除了可卡因成分。
大约半个世纪后,配方中的一些细节先后被调整。
但除了1985年的“新可乐”插曲,可口可乐的配方基本是没有变化的。
巴特勒写道,可口可乐不再试图去适应全球范围中每个区域市场的消费者口味,这项决定帮助公司进一步扩大了规模。
可口可乐成功的关键因素2:Logo中永不过时的字体可口可乐的Logo是由彭伯顿的合作伙伴兼记账员弗兰克·梅森·罗宾逊(Frank Mason Robinson)设计的。
为了区分于竞争对手,罗宾逊坚持可口可乐的标志应采用当时流行于会计之间的斯宾塞字体,并在1923年正式确定了公司Logo。
像对待配方一样,可口可乐公司认为,尽管包装可以紧跟时代潮流,但核心Logo不应该轻易变动。
因此,这一Logo目前已有超过100年的“高龄”,并在全球消费者心中留下了深刻印象。
可口可乐成功的关键因素3:取得专利的瓶装设计当格鲁吉亚商人阿萨·格里格斯·坎德勒(Asa Griggs Candler)在1888年成为可口可乐的大股东后,他雄心勃勃地准备通过营销手段和区域化的瓶装设计将可口可乐打造成全美最受欢迎的饮料。
外语国学院11英教3班邱惠龄2011154317论英译汉的翻译单位在讲翻译单位之前,先让我介绍一个关于Coca-Cola英文名字的来源。
Coca-Cola的英文名字是由彭伯顿当时的助手及合伙人会计员罗宾逊命名的。
他自己是一个古典书法家,他认为“两个大写C字会很好看”,因此用了Coca-Cola。
coca是可可树叶子提炼的香料,cola 是可可果中取出的成份,于是就有了Coca-Cola。
“可口可乐”这个名字,一直以来被认为世上翻译得最好的名字,既“可口”亦“可乐”,不但保持英文的音,还比英文更有意思。
当代西方发达国家品牌名称定位的一个流行趋势,就是像“可口可乐”一样采用以读音取胜新创词汇命名,不注意名字的文字含义,甚至一些世界发达国家的企业大胆用若干西文字母组成毫无意义的名字,只要这个名字发音响亮,没有令世人讨厌的含义,就被认为是一个非常成功的品牌设计。
例如OMO (奥妙)、Pepsi (百事可乐)、NIKON (尼康)、Kodak (柯达)等世界名牌都属于这一类型。
英语作为一种语言,同时也作为客体存在,需要主体将这种语言转换进行操控。
在实际过程中,我们需要对翻译单位进行操作,而这种操作对我们的翻译有着重要的指导意义。
那么什么是翻译单位?我们又该以怎样的单位进行操作?对于翻译理论的讨论,可以说是众说纷纭,国内外学者对此也有很大的分歧。
前苏联巴尔胡达罗夫认为翻译的对象是语言单位;而加拿大翻译理论家让-保尔.维纳(Jean-Paul Vinay)和让.达贝尔纳(Jean Daberlnet)认为,翻译的对象是思维单位。
(参见冯百才,1999)而我个人比较倾向翻译单位的对象是语言单位,他们在一定的情况下所占的主导位置会有所不同,在后面我会进行详细的论述。
首先,来谈一下国内学者对语言单位的观点,主要分为三种:第一种,有学者认为语言单位应大于句子,即认为翻译的单位是句群、语段甚至语篇;第二种是语言单位应该等于句子,即认为翻译单位等于句子,包括小句;第三种则是小于句子,即认为翻译单位是短语、词甚至是词素。
iOS开发直播相关面试题常见问题你昨天/这周学习了什么?你为什么热衷软件开发?你对哪一种控制系统比较熟悉?与否参予过github项目?是否参与过github或其他同类型网站的ios开源项目?恳请叙述一下你的ios应用领域研发流程。
是否熟知cocoapods?它是什么?如何运行的?恳请归纳一下你对软件许可的认知,及其对软件开发的影响。
请概括一下你在构建ios应用时的测试过程。
ios应用如何实现对其他语言、日期格式以及货币单位的支持?恳请叙述一下instruments及其促进作用。
关于ios技术恳请解释一下handoff就是什么,并详述它就是如何同时实现ios、mac/网页应用领域互通的。
icloud包含了哪些技术与服务?ios拓展就是指?若想列出一些热门或常用的范例?healthkit是什么?homekit就是什么?apple pay是什么?能否描述一下如何在应用中使用apple pay?恳请解释一下ios应用领域沙盒机制。
voiceover是什么?请举例解释一下ios中的辅助功能(accessibility)。
开发者如何使用这些功能?ios应用领域就是如何同时实现后台多任务处理(multitasking)的?game center针对ios游戏有哪些功能?ibeacons就是什么?cocoa/cocoa touch是什么?恳请归纳一下core audio,core data以及core location各就是什么。
它们对ios 应用领域有何意义?请描述spritekit和scenekit的作用。
metal就是什么?响应链(responder chain)是什么?它是如何发挥作用的?按钮和其他掌控方式对哪些操作方式作出澄清?appdelegate扮演着什么样的角色?恳请解释一下nsuserdefaults。
就你而言,你可以如何在磁盘中对数组对象展开序列化?你会如何储存用户的认证信息?答何为keychain服务?。
Japan (日本) → the country of Cherries(樱花国)Singapore (新加坡) → the country of gardens(花园国)Brazil (巴西) → the country of coffee (咖啡国)Panama (巴拿马) → the butterfly country(蝴蝶国)Egypt (埃及) → the country of the pyramids (金字塔国)Canada (加拿大) → the country of maple leaves (枫叶国) Tunisia (突尼斯) → the olive country (橄榄国)Ecuador (厄瓜多尔) → the equatorial country (赤道国)Ghana (加纳) → the country of cocoa(可可国)Ethiopia (埃塞俄比亚) → the barefoot country (赤足国)Malaysia (马来西亚) → the ru bber country (橡胶国)Guba (古巴) → the country of sugarcane (甘蔗国)Mexico (墨西哥) → the cactus country (仙人掌国)London (伦敦) → the city of fog (雾都)Washington(华盛顿) → the city of snow (雪城)Venice (威尼斯) → the city of water (水城)Wellington (惠灵顿) → the city of wind (风城)Berne (伯尔尼) → the city of clocks and watches (钟表城) Lusaka (卢莎卡) → the city of copper (铜城)Lima (利马) → the city of drought (干旱城)Mexico City (墨西哥城) →?the city of frescoes (壁画城) Jerusalem (耶路撒冷) → the holy city (圣城)Athens (雅典) → the city of jasmines (茉莉花城) New York (纽约) → Big Apple (大苹果城)狮城---新加坡大学城—英国牛津水城---威尼斯滑雪城—挪威奥斯陆冰雕城—日本札幌鼓城—西班牙卡莱达禁酒城—瑞典斯德哥尔摩音乐城—奥地利维也纳桥城—德国汉堡浴城—芬兰首都赫尔辛基玫瑰城—保加利亚加布罗沃书城—德国莱比锡电影城—法国戛纳;美国好莱坞科学城—日本筑波花城—法国巴黎无烟城、艺术城—冰岛首府雷克雅未克卫生城—新加坡的新加坡市春城—中国昆明邮票城、假牙城—列支敦士登首都瓦杜兹汽车城—美国底特律市噪音城—巴西的里约热内卢绿化城—波兰首都华沙椰城—印尼的雅加达暖城—伊朗德黑兰酒城—德国慕尼黑鞋城—捷克哥德瓦尔多夫表城—瑞士首都伯尔尼塔城—缅甸文化古城蒲甘赌城—美国大西洋域火柴城—瑞典延彻平市雷城—印度尼西亚茂物热城—苏丹首都喀士穆雨城—印度乞拉朋齐冰城—俄罗斯雅库茨克日光城—中国拉萨博物馆城—意大利首都罗马大学城—英国牛津古迹城—叙利亚大马士革足球城—巴西里约热内卢葡萄酒城—阿根廷门多萨图书馆城—英国首都伦敦画城—墨西哥的墨西哥市不夜城—中国黑龙江漠河扑克城—德国的切布尔克蛇城—意大利哥酋洛城鸡蛋城—美国洛杉矶动物城—埃及首都开罗蝙蝠城—印度的瓦丹索朋镇乌鸦城—尼泊尔加德满都鸟城—印度新德里;斯里兰卡首都科伦坡风城—新西兰惠灵顿巧克力城—美国赫尔希金融城—英国伦敦∙CPU 中央处理单元Central Processing UnitFBI (美国)联邦调查局Federal Bureau of InvestigationATM 自动取款(出纳)机Automated Teller MachineOEM 原始设备制造商Original Equipment ManufacturerGPS 全球导航定位系统Globe Position-finding SystemISO 国际标准化组织International Standards OrganizationVIP 贵宾Very Important PersonWTO 世界贸易组织World Trade OrganizationCS 反恐精英Counter StrikeMBA 工商管理硕士Master of Business AdministrationNBA (美国)国家篮球协会National Basketball Association qd.每日一次∙ 1. AAA :1). American Accounting Association 美国会计协会∙2). American Advertising Association 美国广告协会∙3). American Arbitration Association 美国商务仲裁协会∙ 2. AAL:American Airlines 美国航空公司∙ 3. A.B.C.C.:Association of British Chambers of Commerce 英国商会联合会∙ 4. ABS:American Bureau of Shipping 美国船运局∙ 5. AC:Air Canada 加拿大航空公司∙ 6. ACC:American Chamber of Commerce 美国商会(又简称Amcham)∙7. A.E.A:American Economic Association 美国经济协会∙8. AF:Air France 法国航空公司∙9. AFEB:authorized foreign exchange bank 指定外汇银行∙10. AFRASEC:Afro-Asian Organization for Economic Cooperation 亚非经济合作组织∙11. AGM:annual general meeting(公司股东)年度大会∙12. AID:Agency for International Development(美国)国际开发署∙13. AMA:American Management Association 美国管理协会∙14. ASA:American Standards Association 美国标准协会∙15. Amex:American Stock Exchange 美国证券交易所∙16. ADB:Asian Development Bank 亚洲开发银行∙17. APEC: Asia Pacific Economic Cooperation 亚太经济合作组织(2001年10月将在中国上海召开部长级会议和非正式首脑∙∙∙CEO是什么意思?∙CEO(Chief Executive Officer),即首席执行官,源自美国20世纪60年代进行公司治理结构改革创新时∙∙IT是什么意思?∙IT是指信息技术,即英文Information Technology 的缩写.∙∙bt是什么意思?∙BT是一种P2P共享软件,全名叫"BitTorrent",中文全称:"比特流"又名"变态下载"∙∙diy是什么意思?∙DIY是每个电脑爱好者熟悉的新名词,是英文Do It Yourself的首字母缩写,自己动手制作的意思,硬件爱好者也被俗称DIYer.∙∙∙oem是什么意思?∙OEM是英文Original Equipment Manufacturer的缩写,意思是原设备制造商。
可可用英语怎么说可可是世界三大饮料植物之一,原产美洲热带,可做饮料和巧克力糖,营养丰富,味醇且香。
那么你知道可可用英语怎么说吗?下面来学习一下吧。
可可英语说法1:cocoa可可英语说法2:chocolate可可的相关短语:可可树 Theobroma cacao可可群岛 cc ; coco islands可可属 Theobroma ; chocolate tree可可色 Cocos ; cocoa ; choco ;可可酒 CREAM de cacao ; creme de cacao ; Cocoa Liquor ; Cre de Cacao那可可lacoco ; lair conditionersoco ; lhvacoco ; lair conditioning unitoco可可太妃 cocoa toffee可可的英语例句:1. My wife was tucked up in bed with her cup of cocoa.我老婆端着一杯热可可窝在床上。
2. About 70% of the cocoa acreage is treated with insecticide.大约70%的可可树林地喷过杀虫剂。
3. The Ivory Coast became the world's leading cocoa producer.象牙海岸成为世界上可可粉的主要产地。
4. The cocoa industry dwindled because it became increasingly difficult to cover costs.由于越来越难以收回成本,可可产业日渐衰落。
5. A system of forced labour was used on the cocoa plantations.可可种植园中曾实行强迫劳役制。
6. Chocolate comes from the cacao tree.巧克力出自可可树。
学习Objective-‐C入门教程1,前言相信iPhone不久就要在国内发布了,和我们在国内可以通过正规渠道买得到的iPodTouch一样,iPhone也是一个激动人心的产品。
iPhone发布的同时,基于iPhone的程序也像雨后春笋一样在iTunes里面冒出来。
你将来也许会考虑买一个iPhone,体验一下苹果的富有创意的种种应用;你也许会考虑向iTunes的社区的全世界的人们展示一下你非凡的创意,当然也可以通过你的创意得到一些意想不到的收益。
OK,你也许迫不及待的准备开发了。
但是先等一下,让我们回忆一下最初的电影是怎么拍摄的。
这个很重要,因为和iPhone的开发比较类似。
在最初因为器材比较原始,所以拍摄电影需要很高的技术,那个时候的电影的导演基本上是可以熟练操作摄影器材的人。
随着器材的完善,使用也简单起来。
于是器材的使用不是决定一个电影的质量的唯一的因素,取而代之的是故事或者说电影的创意。
iPhone的开发也是这样。
当然从入门到掌握的过程来说任何事情都是开始比较难,随着掌握的程度的加深,你将会觉得开发iPhone应用程序是一件简单而且轻松的事情,到了那个时候,你的主要的制胜武器就不是开发技术,而是你的创意了。
对于你来说,我在这里写的东西都是有关“摄影器材”也就是介绍如何使用iPhone的平台来开发应用程序。
iPhone的开发语言是Objective-‐C。
Objective-‐C是进行iPhone开发的主要语言,掌握了Objective-‐C的基本语法以及数据结构之后,你需要熟悉一下iPhone的SDK。
笔者很难做到在一篇文章里面把所有的东西都介绍清楚,所以笔者打算分成两个主题,一个是Objective-‐C,一个是iPhone开发。
本系列将侧重于Objective-‐C。
当然,任何一种开发语言都无法脱离于运行环境,Objective-‐C也不例外。
高级ios工程师面试题高级ios工程师面试题(一)1.写一下UIButton与UITableView的层级结构2.Cocoa的Foundation对象与Core Foundation对象通过什么关键字进行转换?这些关键字有什么区别?3.KVO是什么?内部是怎么实现的?4.是否可以把比较耗时的操作放在NSNotificationCenter中处理?为什么?应该如何处理?5.利用NSOperation与NSOperationQueue处理多线程时,有3个NSOperation分别为A,B,C,要求A,B执行完之后,才执行C,如何做?6.在非ARC中,可以对哪些对象加上autorelease关键字,它的作用是什么?被autorelease修饰的对象什么时候释放?7详细说明一下App启动过程,从main文件开始说起.main中有什么函数,几个参数,作用是什么?8C高级ios工程师面试题nimation是做什么的?写一下它的层级结构(主要是写下其各种子类)?9.iOS7之前,后台执行内容有几种形式,都是什么?10.一个有序的序列M,判断其中是否有两个元素A,B的和为K?如何判断三个元素的A,B,C的和为K呢?高级ios工程师面试题(二)1. 怎么修改只读(readonly)属性变量使用KVC可以修改 kvc就是键值编码(key-value),可以通过指定的key获得想要的值value,而不是通过调用 Setter,Getter 方法访问2.KVO 除了能观察属性外,能不能观察对象不能观察对象KVO,即 Key-Value Observing, 它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。
简单的说就是每次指定的被观察者的对象的属性被修改后,KVO就会自动通知相应的观察者了KVO是一个对象能过观察另外一个对象的属性的值,并且能够发现值的变化。
这是一个对象与另一个对象保持同步的一种方法,即当另一种对象的状态发生改变时,观察对象马上做出反应。
iOS 面试题及答案1、自动释放池是什么,如何工作的?当您向一个对象发送一个autorelease消息时,cocoa就会将该对象的一个引用放入到最新的自动释放池。
它仍然是个正当的对象,因此自动释放池定义的作用域内的其他对象可以向它发送消息。
当程序执行到作用域结束的位置时,自动释放池就会被释放,池中的所有对象也就会被释放。
2、线程和进程的区别和联系?进程和线程都是由操作系统所体会的程序运行的基本单元,系统会利用该基本单元实现系统对应用的并发性。
线程和进程的主要差别在于它们是不同的操作系统资源管理方式,进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。
线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所有多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。
但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。
3、属性readwrite,readonly,assign,retain,copy,nonatomic各是什么作用,在哪种情况下用?1)Readwrite是可读可写特性,需要生成getter方法和setter方法时2)Readonly是只读写特性,只会生成getter方法,不会生成setter方法,不希望属性在类外改变3)Assign是赋值特性,setter方法将传入参数赋值给实例变量,仅设置变量时4)Retain表示持有特性,setter方法将传入参数先保留,再赋值,传入参数的retaincount会+15)Copy表示赋值特性,setter方法将传入对象赋值一份,需要完全一份新的变量时6)Nonatomic非原子操作,决定编译器生成的setter,getter是否是原子操作,atomic表示多线程安全,一般使用nonatomic4、object-c中创建线程的方法是什么,如果在主线程中执行代码,方法是什么,如果想延时执行代码,方法又是什么?线程创建有三种方法:使用nsthread创建、使用gcd的dispatch创建、使用子类化的nsoperation创建,然后将其加入nsoperationqueue;在主线程执行代码,方法是performSelectorOnMainThread,如果想延时执行代码可以用performSelector:onThread:withObject:waitUntilDone5、类别的作用,继承和类别在实现中有何区别?Category可以在不获悉,不改变原来代码的情况下往里面添加新的方法,只能添加,不能删除修改;并且如果类别和原来类中的方法产生冲突,类别将覆盖原来的方法,因此类别具有更高的优先级;将类的实现分散到多个不同文件或多个不同框架中,创建对私有方法的前向引用,向对象添加非正式协议。
cacao和cocoa区别
“cacao”这个名字被认为来源于玛雅术语“kakaw”和阿兹特克纳瓦特语“cacahuatl”,译为“可可树的豆子”。
“cocoa”一词是18世纪早期cacao的变化。
cocoa和cacao都指可可的种子或坚果,cocoa则更多地被欧洲国家采用。
cacao beans用于制造cacao、cocoa
经过发酵,整个可可豆成为了去皮的“raw cacao”
只需很短的发酵时间/最低发酵温度,即可被食用,cacao相对更加“原始、天然、健康”,而经烘烤和进一步加工后可制成cocoa。
Cacao制品大多是用生可可豆/生可可粉冷压制成的
Cocoa制品则是经过焙烤加工过的可可豆制成的
当一个产品标注了它是“raw cacao”,意味着是通过最低温度进行发酵,能最大化保留可可的营养物质,生产时间长很多,工艺繁琐的多,成本会高许多,cacao一般在一些“生机饮食”比较常见。
Cocoa 是什么?Cocoa 是Mac OS X 操作系统的应用程序环境之一,是与 Carbon 和 Java 处于同一层的环境。
它包含一组面对对象的软件库以及一个运行环境,而且它还与其它的应用程序环境共用一个集成开发环境。
本篇编程主题延伸了这个定义,描述了 Cocoa 的意图,能力和物理形式。
作为一个开发人员阅读此篇Cocoa 功能介绍是理解 Cocoa 的最基础的第一步。
重要本篇编程主题只是初步完成。
尽管文中的内容是准确的,但是在将来有可能会更新。
前提条件这个编程主题中使用的许多名词和概念是Mac OS X 的基础知识。
您可以阅读“系统概览”来理解掌握这些名词和概念,您还可以阅读其它第三方的操作系统技术介绍文章。
Cocoa 介绍与所有的应用程序环境一样, Cocoa 拥有两个面孔;它有一个运行时间外观和一个开发外观。
在它的运行时间外观里, Cocoa 应用程序呈现给用户 Aqua 的界面并且与其它的操作系统可视部分: Finder ,Dock 以及所有其它环境中的应用程序紧密结合。
在融入到以及成为用户体验的无缝的一个组成部分过程中, Cocoa 在它的运行时间外观里表现优秀。
但是开发人员对它的开发外观更加感兴趣。
Cocoa 是一整套集成的面对对象的软件模块-类-,它允许开发人员快速创建稳定的功能完善的Mac OS X 应用程序。
这些类是可以重用和修改的软件构造模块;开发人员可以直接使用它们或者也可以根据他们自己的需求扩展这些类。
Cocoa 的类满足几乎所有可以想像到的开发需求,从用户界面对象到 Rendevnous 网络,以及预料不到的地方,您可以非常容易的创建一个已经存在的类的子类来满足需求。
Cocoa 拥有一个区别于所有其它的面对对象开发环境的截然不同的起源。
自从 1989 年它首次作为NeXTSTEP 露面至今,它一直被完善和测试(请参考“历史简介”)。
它的优美且强大的设计完美适用于快速开发各种软件,不仅仅应用程序还有命令行工具,插件,以及各种类型的“包”。
Cocoa 给了您的应用程序很多免费的功能和外观,为您节省了更多的时间用来开发那些独特的功能。
(要了解 Cocoa 提供了哪些更详细的内容,请参考“ Cocoa 应用程序的功能”)。
您在开发 Cocoa 软件时有可能使用几种编程语言。
主要的语言是 Objective-C ,它有自己的 Cocoa 运行时间。
Objective-C 是 ANSI C 的一个超集,它扩展了特定的语法和语意功能(从 Smalltalk 衍生出来)来支持面对对象的编程。
添加的不多的约定都比较简单而且容易学习和使用。
因为 Objective-C 以 ANSI C 为基础,您可以自由的混合使用纯 C 语言代码和 Objective-C 代码。
除此之外,您的代码可以调用在非Cocoa 编程界面里,例如 Carbon 和 BSD ,定义的函数。
您甚至可以混合 C++ 代码和 Cocoa 代码并且把它们链接到同一个执行代码里。
最后, Cocoa 通过一组并行的 Java 类和一个桥接 Java 接口到它们相应的 Objective-C 实现的机制来支持 Java 语言。
Cocoa 的 Java 口味允许您混合(有限制的)纯Java 工程和 Cocoa 工程。
Cocoa 的核心类库被包装为两个框架,基础工具箱和应用工具箱。
与其它所有框架一样,这些工具箱包含除了一个动态共享库(或者有时几个兼容版本的库)以外,还有头文件, API 文档以及相关的资源。
基础工具箱和应用工具箱的二重唱反映了 Cocoa 编程接口按照与图形用户界面有无关系而被分为不同的类组。
这两个框架是任何最终产品为应用程序的 Cocoa 工程的基石。
Mac OS X 还发布了几个小的框架,它们很好的展示了 Cocoa 编程接口,例如屏幕保护和地址簿框架,而且在将来还会添加更多到操作系统里。
请参考“ Cocoa 框架”获得更多信息。
Cocoa 在Mac OS X 中的位置如果您曾经浏览过苹果开发联盟网站( ),您有可能已经看到过下面图 1-1里面的Mac OS X 系统架构图。
图1-1 Mac OS X 架构展望图这张图唯一的目的就是:给那些不熟悉Mac OS X 人清楚的描述出系统的主要组件和相互之间的关系。
但是这个简化漏掉了许多重要的细节并且使其它一些细节变的模糊不清。
这些细节对于展示 Cocoa 是怎么与其它的部分共存于Mac OS X 中作用重大。
图 1-2把 Cocoa 放在架构图示中更加准确的位置。
这个图把 Mac OS X 分为一系列软件层,从最底层的 Darwin 一直到各种应用程序环境;中间的两层分别代表包含在两个主要的伞状框架里的系统软件,这两个框架是“核心服务”和“应用服务”。
通常在这张图里一层中的一个模块依赖于它下面的层。
图 1-2 Cocoa 在Mac OS X 的架构中在某些部分,这个图与上一张图很接近。
例如,负责绝大多数 Aqua 用户界面渲染工作的系统模块-Quartz (在核心图形框架中实现)是应用服务层的一部分。
并且在这个架构层状结构的底层是 Darwin ;Mac OS X 中全部组成部分,包括 Cocoa ,最终都依赖 Darwin 才能工作。
但是如果您更加仔细观察,在 Cocoa 单独或者成组的类以及在伞状框架中特定的子框架的地方,您可以看见 Cocoa 不是与Mac OS X 其它的部分有特殊的依赖关系就是用它的接口把底层的技术暴露出来。
图1-3显示了一些依赖关系和暴露的情况。
注意:尽管 Cocoa 以来于特定的框架,它不仅仅只是位于这些框架的上面。
在某些情况下, Cocoa 是其它的框架(例如 Carbon )的同级而且甚至可以做一些这些同级框架无法做到的事情。
Cocoa 不仅仅是处于许多底层技术之上的一个面对对象的层。
图 1-3 架构图放大-主要的依赖关系苹果仔细的设计了 Cocoa 以使得应用程序通常需要的功能可以通过 Cocoa 的编程接口访问底层的技术来实现。
但是如果您需要一些 Cocoa 编程接口没有暴露出来的功能,或者如果您需要更加仔细的控制您的应用程序,您可以直接使用一个底层的框架。
(一个主要的例子是核心图形;通过调用它的函数和一些OpenGL 的函数,您的代码可以画比使用 Cocoa 画图方法更加复杂而且颜色细微的图片)。
幸运的是,使用这些比较底层的框架不是什么问题,因为大多数非独立框架的编程接口是使用标准的 ANSI C 写的,而 Objective-C 语言是 ANSI C 的一个超集。
注意:这个架构概观的目的不是把每一个 Cocoa 的特殊的依赖关系或者 Cocoa 与Mac OS X 其它部分的接口独立开来。
事实上,这个图突出了更加吸引人的部分以给您一个框架架构上下文的一个基础概念。
Cocoa 主要依赖的和通过它的类和方法暴露出来的底层框架有核心基础( Core Foundation ), Carbon ,核心图形( Core Graphics - Quartz ),启动服务( Launch Services )和核心打印(打印子系统):▪核心基础。
许多基础框架的类都基于相对应的核心基础模糊类型。
这个紧密的关系使得“过桥免费”-在兼容的核心基础和基础类型之间的类型转换-变的可能。
相应的一些核心基础的实现是基于Darwin 层中的 BSD 部分的。
▪Carbon. Cocoa 为了 Carbon 提供的一些服务而涉足 Carbon 。
这是因为处于核心服务和应用服务层里的各种 Carbon 框架作为系统范围的服务而存在。
Carbon 核心是这些框架里一个非常重要的一个;例如,它有文件管理器,而文件管理器是 Cocoa 用来转换各种不同文件系统的工具。
▪核心图形。
Cocoa 绘画和图像类是紧密的基于(非常自然的)核心图形框架的,而核心图形框架实现了 Quartz 和窗口服务器。
▪启动服务。
NSWorkspace 类暴露了底层的启动服务的功能。
Cocoa 也使用启动服务中的应用程序注册功能来获取与应用程序和文档相关联的图标。
▪打印核心。
Cocoa 打印类给打印子系统封装了一个面对对象的界面。
除此之外, Cocoa 使用 Carbon 环境的文本编码转换服务做一些字符串编码的转换。
不同的 Cocoa 方法也为电源管理暴露了部分 I/O 工具箱框架;为 QuickDraw 画图暴露了部分 QuickDraw (QD) 框架;为苹果事件处理而暴露了部分苹果事件( AE )框架;以及为支持字体暴露了部分 ATS 框架。
Cocoa 应用程序的功能您有可能一行代码都不用写就创建一个 Cocoa 的应用程序。
在 Xcode 里创建一个新的 Cocoa 应用程序工程然后编译运行这个工程。
就这么简单,当然,这个应用程序不会做什么事情,至少不会做什么有趣的事情。
但是这个超级简单的应用程序在被双击后还是会启动,在 Dock 里显示它的图标,显示它的主菜单和窗口(标题是“窗口”),响应隐藏命令,与其它运行的应用程序相处融洽,还会响应退出命令。
您可以移动和关闭窗口,还可以改变窗口的尺寸,或者把它最小化。
您甚至可以窗口里空白的内容。
试着想一下您可以用很少的代码做什么。
从编程工作量来讲, Cocoa 给了您,一个开发人员,很多免费的东西还有很多便宜的东西。
当然,要想成为一个多产的 Cocoa 开发人员意味着您要熟悉新的概念,设计模式,编程接口以及开发工具,而且这些工作并不是可以忽略不计的。
但是熟练度会产生更大的生产力。
编程很大程度上变为一个工作,把 Cocoa 提供的的编程模块与用户自定义的对象和代码组合在一起。
用户自定义的对象和代码定义了您的程序特定逻辑以及连接整个程序的各个部分。
下面的内容简单的列出了 Cocoa 是怎样使您在不用花费很多精力(有时候甚至一点都不用)的情况下为您的应用程序添加功能的:▪基础应用程序框架- Cocoa 为事件驱动的行为和应用程序,窗口以及工作空间管理提供了基础设施。
在大多数情况下,您不需要直接处理事件或者发送任何绘图命令给一个渲染库。
▪用户界面对象- Cocoa 为您的应用程序用户界面提供了一整套丰富的已经制作好的对象。
这些对象绝大多数您都可以在 Interface Builder 的模板中找到,Interface Builder 是一个设计用户界面的开发应用程序;您可以很方便地从模板窗口里拖拽一个对象到您的设计用户界面里,配制它的属性,然后建立它与其它对象的连接。
(而且,当然,您始终可以在程序里事例化,配制以及连接这些对象。
)下面是一些 Cocoa 用户界面对象的例子:buttons drawersradiowindows textfieldssheets tab views table views browserspop-up lists sliders image views color wellscombo boxes scroll views text views steppers▪▪除此之外, Cocoa 还具有支持用户界面的技术,包括那些支持“万能辅助”,执行身份鉴定以及方便在用户界面里和用户自定义对象中建立对象之间的连接的技术。