iPhone开发人员学习的关键概念是什么?

时间:2011-04-15 13:41:58

标签: iphone objective-c cocoa-touch

我是Objective-C的新手,我经历了很多主题,我应该更加重视开发iPhone应用程序的关键概念是什么?

3 个答案:

答案 0 :(得分:54)

有许多概念构成了iOS开发的基础知识。有编码模式,技术和一些你应该知道的一般花絮。

编码模式:

  • 键值观察(KVO):通过向“目标”对象注册“观察者”,允许一个对象响应另一个对象属性的更改。有关KVO的更多信息,请参阅Apple的Key-Value Observing Programming Guide

  • 模型视图控制器模式:在模型视图控制器模式(MVC)中,对象通常适合三种角色之一。您拥有模型,这是最基本的数据。 (或者,更准确地说,数据是如何构建的。)您拥有视图,这是用户在屏幕上看到的内容。最后,您有 Controller ,它在模型视图之间进行协调。 控制器是您的业务逻辑通常所在的位置。 Apple也有关于MVC的文档。

  • Singleton模式: Singleton类(这是一个矛盾的,“单例类”)是一类只能在应用程序中有一个实例的类。单身人士适合“工厂阶级”,或者你不想要两个人的物品。例如,UIDevice类是单例类。 (你的iPhone不是iPad和iPhone同时使用,现在是吗?)在iOS SDK中,单例类通常有一个特殊的初始化程序。单身人士通常使用[[Class alloc] init]而不是通常的[SingletonClass sharedInstance]。 (“共享”实例,因为实例在您的应用程序中“共享”。)请注意,Singleton类在内存管理方面的工作方式略有不同。

编码技巧:

  • 委派:iOS SDK中的许多对象都有委托对象,这些对象响应他们“委托”的对象的某些“事件”。例如,你可以有一个UIPickerView(滚轮上有一堆选项)。当用户选择日期时,委托(与UIPickerView不同的对象)将实现– pickerView:didSelectRow:inComponent:,这将允许该对象执行某些操作以响应操作。

  • 内存管理:与许多语言不同,无论是Java,Javascript还是介于两者之间的任何语言通常都会为您管理内存。在iOS上,Objective-C 执行此操作。您需要跟踪所有对象并在完成后释放它们。经验法则是每个allocretainnewcopy,您必须拥有相应的release或{{ 1}}。关于自动释放的说明:人们在理解autorelease时经常遇到问题。一般来说,本地“自动释放”的对象保证会一直存在,直到结束方法调用。不多也不少。当然,如果你把对象留在别处,那么它仍然会有一个引用。)

  • ARC :借助iOS 5 SDK,Apple推出了自动参考计数功能。即使您计划使用手动引用计数,了解其工作原理也很重要。您永远不知道何时会遇到需要使用的ARCified代码。

  • 数据持久性:许多入门的人在启动之间保存数据时也面临挑战。您有三种选择,具体取决于数据类型。您可以使用NSUserDefaults,文档目录(或应用程序目录层次结构中的一些其他文件夹,或Core Data。您也可以将它们相互结合使用,因为它们不是互斥的。

基本概念:

  • IBOutlets和IBActions autoreleaseIBActionIBOutlet typedefvoid方法返回IBAction并标记为void,以便Interface Builder可以允许您将它们附加到NIB文件中的对象。 IBAction是代码中的“占位符”,用于允许您通过Objective-C代码设置属性或以其他方式与NIB文件中的对象进行交互。

  • @符号IBOutlet符号表示Objective-C常量,因为Objective-C是C之上的超集或框架。在C中,字符串常量将是@。在Objective-C中,"My string is cool."用于区分C和Objective-C的@"My string is cooler in Objective-C."符号的其他示例包括@@implementation,{{1 }和@property

  • 指针:Dave DeLong在他的回答中解释了这一点,但这也是确保你也知道的其他事情。

最后,我给你留言:

虽然你有StackOverflow,但它确实是一个很好的资源,知道如何使用Apple Documentation 。享受你的旅程,祝你好运Getting Started

祝你好运!

答案 1 :(得分:7)

这些不一定特定于iPhone开发,但如果没有它们,你将无法获得它。

  • 指针 - 知道指针是什么。知道为什么我们需要动态分配的内存与静态分配的内存。 (我知道这可能听起来微不足道,但根据我的经验,这是新手最麻烦的第一件事)这是因为你永远不会*处理Objective-C中的原始对象。您始终处理对象引用。 (即,你永远不会处理NSString,但始终是NSString *)但是,有些东西看起来像对象,但实际上并非如此。 NSRect是结构,它们可以堆栈分配。 NSInteger只是原始typedef的{​​{1}}。如果你不知道指针是什么,那么你会疯狂地想知道什么时候你应该放入int而你什么时候没有。

  • 内存管理 - iPhone没有垃圾回收。您必须手动管理内存。接受并继续前进。 Objective-C中的The rules for memory management conventions 琐事。记住它们,并始终记得使用它们。

*你唯一一次处理堆栈分配的对象就是块(*)或当你做一些非常狡猾的事情时。

答案 2 :(得分:2)

要开发成功的iPhone应用程序,您需要了解的不仅仅是通常提供的Objective C最佳实践。在Objective C实践中,了解委托模式和内存管理规则对于iPhone开发非常重要。

Cocoa Touch框架中有很多API。您熟悉和使用的API越多越好。仅此一点可能需要很长时间。

你应该知道像Cocoa Touch这样的事件驱动框架主要调用你的应用程序,反之亦然。

您应该了解UI设计在具有微型显示器的基于触摸的设备上的工作方式。很少有开发人员看到他们的祖母(et.al.)穿着厚厚的三人组甚至可以看到他们的一些偶像。或者在走动时单手使用设备时是否可以操作UI控件。等

您应该学习如何为受约束的系统进行设计。移动设备可能没有看似无限量的后备交换内存。因此,您需要学习如何测量和强力控制应用程序的内存占用。如果您的应用程序可以让CPU大部分闲置,那么小型设备上的电池将持续更长时间。因此,您需要了解如何分析算法以及如何选择有效的算法。

我建议您使用较旧的较慢的iOS设备,并首先了解如何在这些限制下使应用程序正常运行。 (我听说Apple曾经在内部做过这项训练。)