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

问题描述

|                                                                                                                   关闭。这个问题是基于意见的。它当前不接受答案。                                                      

解决方法

有许多概念构成了iOS开发的基础。您应该了解一些编码模式,技术和一些常规知识。 编码方式: 关键值观察(KVO):通过向“目标”对象注册“观察者”,允许一个对象响应另一对象的属性更改。有关KVO的更多信息,请参阅Apple的键值观察编程指南。 模型视图控制器模式:在模型视图控制器模式(MVC)中,对象通常适合三个角色之一。您有了模型,它是最基本的数据。 (或更准确地说,数据的结构方式。)您拥有视图,即用户在屏幕上看到的视图。最后,您有了Controller,它可以在模型和视图之间进行协调。控制器通常是您的业务逻辑所在。苹果也有关于MVC的文档。 Singleton模式:Singleton类(这是一个矛盾的词,\“ singleton类\”)是一次只能在一个应用程序中拥有一个实例的类。单例适用于“工厂类”或不需要两个对象的对象。例如,“ 0”类是单例类。 (您的iPhone同时不是iPad和iPhone,是吗?)在iOS SDK中,单例类通常具有特殊的初始化程序。单例通常使用
[SingletonClass sharedInstance]
,而不是通常的
[[Class alloc] init]
。 (\“共享\”实例,因为该实例在您的应用程序中是\“共享\”。)请注意,Singleton类在内存管理方面的工作略有不同。 编码技术: 委托:iOS SDK中的许多对象都有委托对象,这些对象响应其“委托”对象的某些“事件”。例如,您可能有一个
UIPickerView
(滚轮上有很多选择)。当用户选择日期时,委托(与UIPickerView不同的对象)将实现
– pickerView:didSelectRow:inComponent:
,这将允许该对象响应该操作来执行某些操作。 内存管理:与许多语言不同,它可以是Java,Javascript或介于两者之间的任何一种通常为您管理内存。在iOS上,Objective-C不会这样做。您需要跟踪所有对象,并在完成处理后释放它们。经验法则是,对于每个
alloc
retain
new
copy
,您都必须有一个对应的
release
autorelease
。 (有关自动释放的注释:人们常常难以理解
autorelease
。一般来说,本地“自动释放”对象可以保证在方法调用结束之前一直存在。不多也不少。当然,如果保留该对象从那以后,它仍然会有参考。) ARC:在iOS 5 SDK中,Apple引入了自动引用计数。即使您计划使用人工参考计数,也必须了解其工作原理的基础。您永远不会知道何时会遇到需要使用的ARCified代码。 数据持久性:许多刚入门的人也面临着在两次发射之间保存数据的挑战。您有三个选项,具体取决于数据类型。您可以使用NSUserDefaults,Documents Directory(文档目录)(或App \目录层次结构中的其他几个文件夹之一)或Core Data。您也可以将它们相互结合使用,因为它们并不互斥。 基本概念: IBOutlets和IBAction:
IBAction
IBOutlet
void
typedef
IBAction
方法返回
void
并标记为
IBAction
,以便Interface Builder可以将它们附加到NIB文件中的对象上。 “ 13”是代码中的“占位符”,用于允许您设置属性,或通过Objective-C代码与NIB文件中的对象进行交互。 @符号:符号20表示Objective-C常量,因为Objective-C是C之上的超集或框架。在C中,字符串常量将为
\"My string is cool.\"
。在Objective-C中,应为
@\"My string is cooler in Objective-C.\"
。用于区分C和Objective-C的
@
符号的其他示例还有诸如
@implementation
@property
@class
@end
之类的关键字。 指针:Dave DeLong在他的回答中对此进行了解释,但这是确保您也知道的其他事情。 最后,我给您提一些建议: 尽管您拥有StackOverflow,它确实是一个很棒的资源,但是请知道如何使用Apple文档。祝您旅途愉快,万事如意! 祝好运!     ,这些不一定特定于iPhone开发,但是如果没有它们,您将永远无法获得。 指针-知道什么是指针。知道为什么我们需要动态分配的内存而不是静态分配的内存。 (我知道这听起来很琐碎,但是根据我的经验,这是新手最容易遇到的#1问题)。这是因为您永远不会*在Objective-C中处理原始对象。您总是要处理对象引用。 (即,您从不处理
NSString
,但始终处理
NSString *
)但是,有些东西看起来像对象,但实际上并不是对象。 ѭ30是结构,可以堆栈分配。
NSInteger
只是原始
int
typedef
。如果您不知道指针是什么,那么您会疯狂地想知道什么时候应该放入
*
,以及何时不应该放入。 内存管理-iPhone没有垃圾回收。您必须手动管理您的内存。接受并继续前进。 Objective-C中内存管理约定的规则很简单。记住它们,并始终记得使用它们。 *您唯一一次要处理堆栈分配的对象是块(
^{ ... }
),或者是您在做一些曲折的事情时。     ,为了开发成功的iPhone应用程序,您需要了解的知识不仅仅包括通常提供的Objective C最佳实践。在Objective C的实践中,了解委派模式和内存管理规则对于iPhone开发非常重要。 Cocoa Touch框架中有很多API。您熟悉并使用过的API越多越好。仅此一项就需要花费大量时间。 您应该了解事件驱动框架(例如Cocoa Touch)通常会调用您的应用,反之亦然。 您应该了解UI设计在具有微小显示屏的基于触摸的设备上的工作原理是如何不同的。很少有开发人员看到他们的奶奶(等)穿着厚厚的三焦点眼镜甚至能看到他们的某些图标。或者是否可以在四处走动时单手使用设备来操作UI控件。等等。 您应该学习如何设计约束系统。移动设备可能似乎没有无限数量的后备交换内存。因此,您需要学习如何衡量和严格控制应用程序的内存占用量。如果您的应用可以使CPU大部分处于空闲状态,那么小型设备上的电池将使用更长的时间。因此,您将要学习如何配置算法以及如何选择有效的算法。 我建议您使用较慢的旧iOS设备,并首先学习如何使应用在这些限制下正常运行。 (我听说Apple过去经常在内部做此培训。)     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...