Re: [問題] 請教陣列與指標的基礎觀念

作者: uranusjr (←這人是超級笨蛋)   2014-09-14 12:50:02
※ 引述《balaking (看八卦長知識)》之銘言:
: 小弟是Obj-C的非常非常新手,之前一直寫的是C#與Java這種OOP語言
: C以前在學校有學過,不過現在幾乎都還給老師了
: 目前「精通Objective-C程式設計(第六版)」看到第三章p.40
: 裡面有一段程式這樣寫:
: 1 Fraction *myFraction;
: 2 myFraction = [Fraction alloc];
: 3 myFraction = [myFraction init]
: 4
: 5 [myFraction setNumerator: 1];
在 C# 和 Java 裡, 所有東西(除了 primitive types)都是參考
而在 Objective-C 中, 所有東西(除了 C types)都是指標
他們在這部分其實理念一模一樣
所以上面這段可以直接轉譯為這樣的 Java 程式
Fraction myFraction;
myFraction = new Fraction(); # Java 的 alloc 與 init 是用 new 一次完成
myFraction.setNumber(1);
在 Objective-C 裡沒有「參考」的概念
但它用指標模仿的行為其實和 Java 與 C# 的參考一模一樣
其實你用 C# 的想法學 Objective-C 在很多時候可以互通
C# 中所有 Object 的子類別都是 reference type
這對應到 Objective-C 所有 NSObject 子類別都是以 pointer 形式存在
而 Objective-C 的 C struct 就對應到 C# struct, 它們都是 value type
在 Objective-C 偶爾會看到的 C 就相當於 C# unsafe mode
後者也可以用類似 C pointer 的寫法
說真的你對 C# 與 Java 了解夠多的話實在不應該在這裡卡住
反而應該在比較偏 C 的部分遇到問題才對
這裡根本就一點也不 C, 請不要用 C 的邏輯來想
Objective-C 在用方括弧呼叫的地方根本完全是物件導向
感覺你的理解有點怪怪的 :/
作者: akasan (KITO)   2014-01-02 00:43:00
valgrind, 但 windowns 版的沒試過XDlinux 上那真的是不二選擇了
作者: Linux (Windows)   2014-01-02 00:45:00
我是用 Windows ....>"<

Links booklink

Contact Us: admin [ a t ] ucptt.com