作者uranusjr (←这人是超级笨蛋)
看板MacDev
标题Re: [问题] 请教阵列与指标的基础观念
时间Sun Sep 14 12:50:02 2014
※ 引述《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 在用方括弧呼叫的地方根本完全是物件导向
感觉你的理解有点怪怪的 :/
--
作者 Linux (Windows) 看板 C_and_CPP
标题 [问题] 如何确认是否 free 对记忆体
时间 Fri Nov 2 00:14:03 2012
1F:→ akasan:valgrind, 但 windowns 版的没试过XD 11/02 00:43
2F:→ akasan:linux 上那真的是不二选择了 11/02 00:44
3F:→ Linux:我是用 Windows ....>"< 11/02 00:45
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 218.161.94.175
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/MacDev/M.1410670205.A.0A7.html