Objective-C学习笔记1
因为工作需要,最近在学习Objective-C语言,越发觉得很有意思,感觉很是应该记录一下。
语言概况
简单来说,Objective-C是建立在ANSI C之上的语言。换言之,它与C++是平行而且对立的。在Objective-C中,面向对象概念的实现是从Smalltalk中借鉴而来的,与C++或Java的版本很不相同。它拥有如C++或Java一般的类继承结构,但同时又具备反射性(Reflection,能够在运行时修改对象行为的能力)。它同时支持强类型和弱类型,而且弱类型为真正的动态类型,这些变量在编译时并不会确定类型。某种意义上来说,Objective-C更像是C++与JavaScript的混合体:支持继承链、前期符号化+后期绑定、广义多态。
Objective-C兼顾性能与灵活性,看起来确实是种高级的语言。
消息机制
Objective-C中最有意思的概念就是传递消息了。在这个语言中,你不是“调用某个对象的某个方法”,而是“向某个对象发送一条消息”。简单地说,你是告诉某个对象,我要你执行一个名叫“doSomething”的方法,参数如下,什么什么的;至于接收方怎么处理这个消息,则是接收方的事情。接收方可以调用那个方法,也可以把这个消息转发给别的对象。
另外,消息是按名发送的,至于这个名字对应的是哪个方法,完全是运行时决定的。这体现出了Objective-C对象原生的多态性。消息的名字在Objective-C中叫做selector。selector类似于C++中的签名(signature),但selector中并不包含方法属主的信息,而且所有同名的方法都具有相同的selector。用C++的语言来解释就是,在不同类中的所有同名的方法都自动加入了同一个v-table中,无论它们之间是否有继承关系。这种按名调用的方式很接近于JavaScript等脚本语言,给程序开发提供了极大的灵活性。
self vs. this
Objective-C中的self指针更像是JavaScript中的this指针。它是动态的,指向消息接收的对象。我相信这个区别在设置callback时会体现出来,目前还没有很好的例子。
Protocol vs. Category
在Objective-C中,Protocol和Category都可以向已存在的类中安插更多的方法,而且它们都是静态的。
Protocol相当于C#和Java中的interface,或者C++中的抽象类。它定义了一系列的接口,而你需要对它们一一实现。一个Protocol可以被多个不同的类采用(adopt)。在定义一个接口时,无需提供该接口的实现。采用该接口的类负责实现这些接口。
Category则向已有的某个特定的类中直接增添新的方法。它可以将所有方法按照功能或者其它标准整理到不同的类别中。一个分类一定是扩展一个特定的类的,一旦扩展就会被视作原生方法,在运行时并无区别。在语义与语法上,Category很接近C#中的partial class,但Category还可以扩展源码不可用的类(例如NSObject等系统类)。
关于访问级别
由于Objective-C是靠消息传送机制来动态调用方法的,在运行时系统会自动寻找最匹配的方法来响应消息,所以这里并没有严格意义上的protected或者private方法。在这一点上,Objective-C很像JavaScript,用户需要用自己的方法来标识method的访问级别,而且无法真正意义上地隐藏某些method。
一个常见的方法是利用category。对所有方法进行分类,然后人工定义某些分类是“私有的”。另外,Objective-C 2.0支持空分类(也叫做extension),这个分类中的方法可以在主实现(main implementation)代码块中进行定义,这样就与私有方法的声明方式更加接近了。
这对一个从C++/Java刚刚转行过来的程序员来说可能会有些不适应,但实际上也提供了更多的灵活性。
关于Objective-C++
Objective-C++只是简单地将Objective-C和C++放在了同一个编译器中,使得在使用C++库时也能一同编译。Objective-C的部分和C++的部分完全独立运作,Objective-C对象和C++对象也互不兼容。
简单地说,使用Objective-C的对象时,向它们消息([obj doSomething]);使用C++对象时,调用其方法(obj->doSomething())。
这一个周末的学习就这么多收获,之后想到新的还会继续写。如果有不对的地方欢迎同学们指正!
anime style rendering release version 1
Anime Style Rendering (Unity 3D implementation) Release Notes
- Support environmental ambient color.
- Support multiple light source with different light type and color.
- Importance-based edge detection.
- Integrated with Depth-of-Field post-effect.
- Acceptable frame rate on old model machines.
Here are two screenshots from this release. The light setups are supposed to render a sunset color scheme and a midnight color scheme.
The following examples are designed to demonstrate how the depth-of-field effect helps to telling stories. The first figure is emphasizing the girl close to the camera while the second figure focused on the other girl.
Runnable demo files:
Anti Gravity Racing Tech Demo 1!!
Fairycode已开始尝试竞速型游戏的开发,这是我这两天做的一个Tech Demo,使用了OGRE和Bullet Physics引擎,图形资源引用自OGRE自带的Demo,顺手还增加了个粒子喷射器。下面是几张截屏图像~
![[up1]](http://usr.tuc.cn/lolo/blog/2009-07/up1.jpg)
![[up2]](http://usr.tuc.cn/lolo/blog/2009-07/up2.jpg)
![[up3]](http://usr.tuc.cn/lolo/blog/2009-07/up3.jpg)
~Lolobucks经典~ Mocha 精致配图版
Mocha(摩卡)这个名字和咖啡的关系真是千丝万缕,它既是一种咖啡豆,也是一种咖啡制作器具,还是一种花式咖啡.大家最熟悉的当然是这种咖啡了.我今天是仿照Starbucks风格(山寨万岁),使用ARABICA咖啡豆,用半自动的Espresso Machine来制作的经典Coffee Mocha.上次的Mocha Latte有人反映存在严重跳步问题,所以这次就详细地把每个步骤都写出来~争取馋到大家!
~点击小图看原图~
STEP 3.安装handle到咖啡机上,拧紧。打开开关,开始烧水!
![]()
STEP 5.水烧开后开始冲调espresso,正如其名,25秒即可!真正的espresso上面会漂浮着一层香浓的咖啡油脂;
STEP 6.将咖啡机改为蒸汽模式,准备2oz的凉鲜牛奶(推荐雀巢/八喜/蒙牛品牌);
![]()
![]()
STEP 7.打开蒸汽开关,15秒就成吹出一杯温暖的froth milk;
![]()
STEP 8.将刚做好的espresso和1/2oz巧克力糖浆倒入杯中;
STEP 9.用勺子把froth milk上层的泡沫去掉,然后将下层的热牛奶缓缓倒入咖啡杯,至8分满;
STEP 10.用爱护牌喷射奶油做回旋状的奶油topping;
一些经验总结和注意事项:
- 如果要招待客人,还要搭配糖包,小碟和咖啡勺.今天我是自己享受就不准备那些东西啦!
- 咖啡豆果然还是要现做现磨,不然香味会差很多..也算是个小常识吧,汗~
- espresso只能萃取25秒! 继续开着的话出来的基本上就是白开水了..
- 一般recipe上都用oz做单位,刚开始比较晕,现在发现大约2oz = 一两或50ml, 就比较容易掌握啦!
- 其实Mocha应该是最后撒巧克力屑的,由于制取起来略微麻烦,而我又比较喜欢肉桂粉的香味,就擅自替换了;大家也可以根据自己的口味选择不同的点缀!
- 关于espresso machine的一些小问题:咖啡制作完成后handle要及时取下来,不要长期把handle留在咖啡机上,不然以后可能会影响密封; 蒸汽头的金属管一定不要徒手去摸; 每次使用完后,可拆卸部件要及时清洗!
~Lolobucks新品~ Mocha Latte
诶呀,Mocha Latte呢,其实就是加了巧克力风味的Latte而已啦,算是很入门级的了。我做的这个,无论是道具还是工艺还都相当业余,但口味还算不错。下面还是按照步骤看图说话哦!点小图看大图~
STEP 1. 准备一个medium cup。
STEP 2. 加入2茶匙巧克力糖酱。
STEP 3. 加入1 shot(约30 ml) espresso,stir!
STEP 4. 打70ml的whipped milk,慢慢倒进杯中,倒满为止~
~FIN~ 完工!
奶泡细节……嗯,打得不够仔细,气泡还是蛮多的。但拜于市售的蒙牛/伊利纯牛奶还不到3.0g的蛋白质和脂肪含量……。口感还算说得过去,软软滑滑的。
最后推荐一个附属品。叫“恋”奶精,台湾进口的,在锦绣大地有卖。口感超浓超滑,配咖啡或者红茶都十分合适。
~总结~
经过多次尝试,我认为做Mocha Latte的关键要点主要有:
- 做espresso的时候咖啡研磨粉一定要按量放够,不然做出来的咖啡跟白开水差不多-_-
- 牛奶加热一定要控制到70℃以下。因为一旦超过70℃,牛奶中的蛋白质就会凝固(比如形成咱们常见的奶皮),这样在奶泡杯里就死活都打不出froth了。因为没有数字化的设备,我用家里的微波炉大约就是高火20秒。
- 做whipped milk之前已经要把奶泡杯洗干净并且擦干,不要留水分,否则会稀释本来就不浓的牛奶。
- 要趁热将whipped milk倒入espresso里。这样在倒的过程中他们就能很快混合(因为布朗运动?-_-)。饮料的浓度会很快上升,只有够浓才可能做雕花啊……
其实我是想做Mocha,但是没有CREAM…因为CREAM开封后3天不吃完肯定会坏掉,而一杯咖啡的topping只要一点点就够了,诶!
果然将Apple和谐了
奥运开幕前,苹果的iTunes Store首发ZD专辑着实令人悲伤。但更令人悲伤的事情发生了……我国最为伟大的GFW把整个iTunes Store都给和谐掉了。
iTunes再也连不上网络了,iPod和iPhone也不能更新了。
这次我们该支持谁呢?
追加一句话,我们是在自欺欺人!
当为迎接奥运而将许多网站解封时,中国的网民重新获得了发出自己心声的权力。如今奥运会尚未结束,互联网开放程度还是不可避免地倒退了。不知那些刚到北京的外国游客,发现连iTunes Store都上不了,对“中国国家局域网”是怎样的印象。另外,这样的封锁就是掩耳盗铃,无异于当年的闭关锁国:DALAI LAMA依然在除中国领土外的世界舞台上大肆地宣扬着ZD理论,而对此持有坚定反对意见的中国民众却一句心声都传达不出去。可爱的祖国,请不要让历史倒退!
图片引用:http://yksoft1.spaces.live.com/blog/cns!66B9967EC9D22DD4!612.entry
为人。
“人文奥运”是北京奥运三大理念的核心。可笑的是,至今我们能看到的解释竟仍停留在文明观赛上,甚至还有人翻译成“People’s Olympics”。
Humanistic,人文,其实就是以人为本。举办奥运会的目的是通过运动使世界人民更积极向上,使人更健康、更强壮,但绝对不是给人带来伤残与痛苦。刘翔转身的霎那所闪烁的感动,正是这样一种奥林匹克精神——刘翔的身体健康远远重要于那块金牌,无论是对于他本人还是对于我们每一个人。桑兰的那一幕我们每个人都记忆犹新。谢谢刘翔,你的决定就是胜利,Beijing 2008因为有你,我们看到了人性的光辉。我们仍应为刘翔欢呼!
8月14日,刘子歌打破了由澳大利亚选手斯基佩尔所保持的世界纪录。当成绩公布的时候,斯基佩尔主动与刘子歌拥抱祝贺。原纪录保持者向打破纪录的运动员表示祝贺,这样的场面在Beijing 2008已经出现了许多次。即使被别人超越,斯基佩尔仍不是输者,她以善意赢得了尊敬。
最后,我仍然要批评开幕式(但不是骂开幕式)。就算爱国主义者或者任何人如何骂我,我也要说。为了开幕式,太多人付出了太多,我是充满感动的,却也是充满惋惜的。为了达到这样美仑美奂的效果,他们在训练过程中却饱受着常人所无法能承受的痛苦。即使他们有坚强的意志与爱国的精神,我们仍无法否认他们的艰辛。我就是要质疑“人海战术”的必要性。在外国人评论说“只有中国能够做到”时,我们可以把这句话理解成赞扬,但另一层含义我们也不言自明。奥运会倡导的人文精神是以人为本,奥运会是一场欢乐的盛会,在看到由两万人为我们呈现的恢宏场面时,我们也应将“每一个人”都放大成个体,他们是否每一个人都体会到了奥林匹克的欢乐了呢?但愿是吧……
13年前的电话答录机~
http://tuc.cn/upload/Bruce_McCulloch_-_11_-_Answering_Machine.mp3
很好听~很好玩儿的歌~
前两天EasyFM的某个老外DJ放了这首歌,据他介绍,这是1995年时加拿大的一个肥皂剧中的音乐,肥皂剧的导演就是这个Bruce McCulloch。
这张专辑叫做<<Shame-based Man>> 1995
估计是太古老了吧,这张CD在VeryCD和douban上都没有,这首歌的MP3也是太难找了!
物以稀为贵~既然这么难找,就跟大家分享一下喽!
–歌词–
11 – Answering Machine
Shame-based Man
Bruce McCulloch
I Love My
I Love My
I Love My Answering Machine
I Love My Answering Machine
It Keeps the People I Know Away from Me.
I Don’t Watch TV
Don’t Watch my Weight
I Watch My Answering Machine.
My Best Friend says, "It’s Me Pick it Up"
I Say No.
My Girlfriend says, "It’s Me, Pick it Up"
I Say No.
"Mr. Harris From the Bank Calling, Please Pick Up"
Yeah, right.
I Love My Answering Machine.
I Love My Answering Machine
I Love My Answering Machine
It Talks to My Friends For Me.
Do I Want to Go For Dinner?
Should We Meet Somewhere at 8?
Only if I can take my Answering Machine.
I Love My Answering Machine
I Love My Answering Machine
It Keeps the People I Know Away from Me.
Sometimes I Miss it
In the Middle of the Afternoon
I Call it Up
To See How it’s Doing
How can I tell my gal
Who I’m whispering to?
You Know it’s My Answering Machine.
I Love My Answering Machine
I Love My Answering Machine
It Keeps the People I Love Away from Me.
My answering Machine says,
"Hi This Is Bruce, I’m not here right now so please leave a message and I’ll get back to you. Thank you. bye bye."
What My Answering Machine should say is,
"Hi This is Bruce and I am here right now, and I am listening to you, but I’m not going to pick up. So leave a message and I probably won’t get back to you. Thank you. Bye Bye."
I Love My Answering Machine
I Love My Answering Machine
It Keeps You People Away from Me.
I Collect Calls
Like Spinsters Collect Porcelain Dolls
Sometimes I’ll Get Fearless and Return One.
But I’ll Only Speak
If on the other end of the phone
Is another Answering Machine.
We love our Answering Machines
We love our Answering Machines
They keep the People We Know Away from Me.
We love our Answering Machines
We love our Answering Machines
They’re the very best thing to ever be Invented.
London & Paris 这一路
这些这些,其实根本就是在意料之中的。他要是愚蠢到连如此大好的时机都不去抓住,那也真没的混了。
另外,事情也没有很多人想的那么严重,真正居心叵测的人只有很少很少,基本上闹腾的都是当地的盒饭族:只要帮我挥两下旗子就给你100块钱,无论到哪个国家都会有大票人愿意做的。
倒是应该好好地批评一下我们的媒体策略。这两年,我们的媒体已经摔了无数个跟头了——有话憋着不说,等他们占尽先机,连UFO都快给编进来了,才吞吞吐吐出来解释说没这么回事儿——这样的话谁信啊?“当初为什么不实话实说?难道果真有内情?”
净装河蟹,有用么?有P就放,自然释放。有P偏憋着……就慢慢熏自己吧。
![[Screen-shot-2010-02-07-at-1]](http://usr.tuc.cn/fc/blog/2010-02/Screen-shot-2010-02-07-at-1.jpg)
![[Screen-shot-2010-02-07-at-2]](http://usr.tuc.cn/fc/blog/2010-02/Screen-shot-2010-02-07-at-2.jpg)
![[Screen-shot-2010-02-07-at-6]](http://usr.tuc.cn/fc/blog/2010-02/Screen-shot-2010-02-07-at-6.jpg)
![[Screen-shot-2010-02-07-at-5]](http://usr.tuc.cn/fc/blog/2010-02/Screen-shot-2010-02-07-at-5.jpg)