V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  chchwy  ›  全部回复第 9 页 / 共 12 页
回复总数  230
1  2  3  4  5  6  7  8  9  10 ... 12  
2013-10-09 09:59:37 +08:00
回复了 Ricepig 创建的主题 程序员 稍微吐槽一下ObjC的函数调用
@Ricepig
如果你想想Objc的出生時間是1983年,比Java、Ruby、Python等等語言都大了五歲到十歲,
你就不會意外它的語法設計如此了。Objc的老語法也是到了近兩年(2011年左右),Apple開始投入Clang項目之後,才慢慢有一些改良與演進。

Objc的亮點是在Objc Runtime,比方說可以透過
[myObject responseToselector:@selector(myMethod:)];
來判別對象是否能回應消息,這可是動態語言才有的特性阿,C/C++是連想都不敢想的。

Objc有動態語言的特性,強型別,同時完全兼容C語言,其實想想也明白它是一個妥協之下的產物。
2013-10-08 23:31:59 +08:00
回复了 Ricepig 创建的主题 程序员 稍微吐槽一下ObjC的函数调用
可惜上次GNUStep的募資沒有成功,錯失了一次把Objective-C推出Win/Linux的機會。
2013-10-08 18:32:32 +08:00
回复了 Ricepig 创建的主题 程序员 稍微吐槽一下ObjC的函数调用
> 或者函数设计者写成了copyItem:atPath:error ,还能理解吗?

大哥,你這句就是純找碴了,這不就是命名習慣不佳嗎? 干語言設計何事?
2013-10-08 18:27:48 +08:00
回复了 Ricepig 创建的主题 程序员 稍微吐槽一下ObjC的函数调用
原來如此,那這個就是語法設計議題了。
要不要把名字和參數名切開只能說是當初語言設計者的喜好問題了。

我可以說說objc的背景

這種參數可以穿插在名字中間的寫法是從Smalltalk來的,Objc精神上是繼承自Smalltalk,Smalltalk 並非 C-like的語言。

只是迫於現實的緣故,Objc設計之初需要相容於C語言。所以用C的語法來思考,可能不夠妥當。

看看Wiki的Smalltalk條目,看看他的語法,或許你比較可以理解
https://en.wikipedia.org/wiki/Smalltalk
2013-10-08 18:17:55 +08:00
回复了 Ricepig 创建的主题 程序员 稍微吐槽一下ObjC的函数调用
牽扯到清晰就跑題了,大哥。

我只是說明這樣的函數名並沒有任何的邏輯衝突之處。清晰與否則是個人主觀。

你喜歡用括號就用括號表達參數名,你當然可以認為這樣比較好,只可惜Objc並沒有參數名,也沒有用括號。

Objc的前身Smalltalk也不是用括號。
2013-10-08 18:05:03 +08:00
回复了 Ricepig 创建的主题 程序员 稍微吐槽一下ObjC的函数调用
我可以舉個例子說明

比方說複製檔案的函數是
NSFileManager copyItemAtPath:toPath:error:

具體用法是
[myFileManager copyItemAtPath:@"FileA" toPath:@"FileB" error:nil];

你能說消息名是copyItemAtPath:
第一個參數名字叫Path 第二個叫toPath嗎?

當然不是的。

copyItemAtPath:toPath:error: <=這整個都是消息的名字,只是消息名稱中間可以填洞。

整句代碼就像是英文句子一樣,後半段你可以為了清晰而寫明參數名,但是不寫也是可以的。

像是有的數值運算庫 就用 [Fraction set:1 over:2] 來表達1/2的概念。
2013-10-08 17:57:48 +08:00
回复了 Ricepig 创建的主题 程序员 稍微吐槽一下ObjC的函数调用
我懂你的意思了。

其實還是一句老話,整句都是函數名字。
不要理解為前半段是函數名字,後半段是參數名字,不是這樣的。

colorWithRed:green:blue:alpha: <= 這整個都是函數名字。

只是這個函數名字中間有挖些洞,可以填入參數值。
2013-10-08 17:44:35 +08:00
回复了 Ricepig 创建的主题 程序员 稍微吐槽一下ObjC的函数调用
@Ricepic
不太明白你說的「第一个参数隐含了名字,造成第一个参数非常特殊」是什麼意思。

這四個參數有什麼不一樣嗎? ...可否麻煩您說的清楚些?
2013-10-08 16:54:11 +08:00
回复了 Ricepig 创建的主题 程序员 稍微吐槽一下ObjC的函数调用
函數的簽名是
UIColor colorWithRed:green:blue:alpha:


別誤解為python那種named parameter了,red green blue alpha不能互換順序,也不能省略的,整串都是函數的名字。
2013-09-30 09:30:15 +08:00
回复了 KickTR 创建的主题 程序员 [C++]指针被莫名其妙修改了……
http://www.v2ex.com/t/74249 [V2EX技巧] 贴图和贴代码的方法
2013-09-18 23:46:03 +08:00
回复了 bengtuo 创建的主题 程序员 有没有技术能根据摄像头扫描出物体的3d 模型?
Kinect Fusion
2013-09-16 09:54:56 +08:00
回复了 frogs 创建的主题 程序员 各位对objc的语法怎么看?
有Xocde的自動補全下,我只能說Objective-C的語法超棒,語句即文檔。
首先你要明白一件事,最近兩三年Objective-C的語言演進很快,extension是舊時代留下來的產物。

Xcode 4.2/LLVM 3.0 之後Objc語言引進了非常多新特性,語法也有相當變化。

詳細可查看這張表:
https://developer.apple.com/library/ios/releasenotes/ObjectiveC/ObjCAvailabilityIndex/

Xcode 4.2 是 2011年10月發佈的,我猜你的書的出版日期可能在這之前。

1. 以前只把方法和變量從.h移走,是沒辦法通過編譯的,私有方法一定要放在extension裡。
2. 現在私有變量、私有方法都直接寫在@implementation block裡就好了,但是這都是在Xcode 4.2之後才有的功能,以前不能這樣寫的。
3. 現在extension已經成了雞肋般的存在。唯一的用途就是有個類似.h的方法列表,閱讀上比較容易。
2013-08-26 18:46:02 +08:00
回复了 tonyzzp 创建的主题 程序员 搞过两年JAVA,想学c++,求指教
重點不是語言,是應用。否則學了也只是學個語法。您想用C++來做什麼?
2013-08-15 00:20:03 +08:00
回复了 levey 创建的主题 Vim [无聊贴]喜欢用 :wq 还是 :x
:x
大部分編輯器都支持tab鍵轉成四個空格呀
Java現在大多應用在Web上啦,幾乎沒人用它來寫桌面應用。

桌面應用現在主流是C#/.NET,比C++好寫一百倍啊。
需要跨平台的話現在當紅的方案是C++/Qt。
@hellohacker { 但是我发现,有时候修改的文件多了,再去找到底修改了哪些文件,是一件非常头疼的事情。 }

用了git,隨時知道源碼何時何地何處有修改,各修改版之間的差異,全都一清二楚。

你要做的就是在服務器上開個git/svn版本庫,然後開始學著用。本地端改完了就將變更推送進版本庫,服務器上再從版本庫更新源碼。
2013-08-02 10:15:02 +08:00
回复了 Nicklos 创建的主题 问与答 小团队用什么协同工具做项目管理?求推荐。
推薦Trello
2013-08-01 11:11:55 +08:00
回复了 viss 创建的主题 iDev ios新手,求推荐一两本不错的书? 如果有二手书籍出售的也可以。
@fiture
英雄所見略同,這兩本就是我當初入門的學習書單,兩本書涵蓋了大部分所需的基礎。:)

只是 Objective-C 語言近兩年有不少變化,那本Programming in Objective-C也隨之出到第五版了,恐怕第二版的內容稍有過時。最好上網關注一下語言的最新發展。
1  2  3  4  5  6  7  8  9  10 ... 12  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   1503 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 27ms · UTC 16:34 · PVG 00:34 · LAX 08:34 · JFK 11:34
♥ Do have faith in what you're doing.