2010-02-07 43 views
2

目前我正在学习Objective-C 2.我知道它被Mac开发人员大量使用,但我现在更感兴趣的是在这个时候学习语言,而不是框架在Mac OS X/iPhone上开发(基金会除外)。为了做到这一点,我想编写一些中间*控制台应用程序,但我坚持想法。语言便携示例程序

大多数例子都是基于“编写一个有getter/setters和打印函数的分数类”的方法,这对C++背景来说并不是很有挑战性。我想要一些通用的程序示例,但我不希望它们包含任何Objective-C实现细节。我想弄清楚程序结构/编写我自己的接口并从那里学习语言。

总结:我很好奇Objective-C程序员会推荐哪些示例程序来探索该语言。

“中间”的应用是沿的“编写一个程序,从所述命令行需要一个URL,并返回数据中的某些字的出现次数的东西线的一个例子返回:

example -url www.google.com -word search

+0

你说你想在没有学习框架的情况下学习语言,但是你太有经验了,无法打扰简单程式。你猜怎么了?语言很简单,如果你不使用现有的框架,你会重新发明它们来做任何复杂的事情。如果你想分析一个(现代)网页,你可能需要分析JavaScript,这将需要WebKit框架。 这就像说你想通过记忆字典来学习英语。要学习Obj-C,你必须学习框架,或者从其他从业者那里学习,从书本上学习。 – gary 2010-02-07 08:47:09

+0

学习语法更适合阅读和编写它,习惯于使用Objective-C++模板使用Objective-C对象来习惯编写实现自己垃圾回收的对象,使用deepmutablecopy或任何复制语义复制对象。 etc. – 2010-02-07 23:23:32

回答

2

“项目欧拉”是这种事情的标准回应,但我觉得你不那么有兴趣被告知实施算法的东西(因为知识更容易在语言之间移植)和更感兴趣在小型项目中,将使您熟悉核心库。这是否公平?

如果是这样,海事组织,你应该知道怎么做你希望使用的认真工作语言的标准库以下基础:

  1. 标准IO
  2. 网络IO
  3. 磁盘IO和导航文件系统
  4. 正则表达式公用事业
  5. 结构化数据(XML库和CSV库如果它们存在)

编程问题我推荐给那些人:

  1. 听起来你已经这样做了。
  2. 一个非常简单的代理 - 就像您在帖子中描述的那样,但是在端口上监听包含URL的消息,而不是在命令行上执行该代理,并且同样将结果返回给通过网络而不是输出到stdio。 [显然你需要让机器在适当的防火墙后面!]
  3. 某些需要目录路径并递归计算其子节点所包含的行数的东西。 (因此,获取目录的列表,打开每个子文件并计算换行符的数目,然后打开它的每个子目录,获取它们的列表,......)在合理范围内记录遇到的任何错误(例如,没有读取权限)办法。写出最后的结果到提供的目录中。
  4. 通常,如果我使用足够的语言工具,我会遇到一些我自然使用regexps找到的问题。我会假设对你来说也是如此,现在就踢这个元素。
  5. 提取StackOverflow.com,并[通过将其放入DOM模型并导航]确定此问题是否仍位于首页。
+0

感谢您的示例 – 2010-02-07 08:27:58

2

通过使用测试框架对Objective-C进行探索,我获得了最大的收益。我已经写了一个简短的blog post。你还应该围绕Objective-C所使用的内存管理约定,引用计数需要一点时间来习惯,但是如果责任明确分离(我也在我的博客中已经写过这些内容),它工作得很好。通过在测试框架(GHUnit)上弄脏我的双手,我能够学到更多关于该语言的知识,而不是以“传统”方式学习。当然,你需要一个小宠物项目,否则这种方法没有意义。

我不认为你的例子是一个非常好的主意,因为它需要你混淆http连接,资源等,毕竟它是一个小框架。在这方面解析一个文本文件会更容易一些。使用单元测试框架具有以下优点你:

  • 了解被迫从地面开发松散耦合的方式进行成分多达
  • 从而探索独特的机制平台特定的构建系统和部署细节
  • 的语言,可能需要新的或使已知模式的冗余(例如类别使依赖注入过时等)
  • 快速编译测试周期,在调试器
  • 与源控制相结合的前花费更少的时间:p ainless实验

您还应该查看测试框架的实现,因为测试框架总是需要在某种程度上处理元数据。测试框架通常与隔离框架一起使用。他们基本上在运行时创建符合某些接口的对象,并充当具体对象的替身。看看它们的实现将教你如何在Objective-C中完成运行时操作(关键字:Method-Swizzling)

+0

了解Objective-C – 2010-02-07 08:26:43

+0

+1所暴露的元数据的绝佳想法。学习新语言的很大一部分是揭示你对语言的无效假设,我可以看到一个单元测试框架加速了这个过程,所以这是一个有趣的观点。 – Arkaaito 2010-02-07 08:33:25