有很多关于iPhone编程的资源。其中大部分涉及“我该如何做X”,例如“设置导航控制器”或“从URL下载文本”。这些都很好。
现在我更感兴趣的是关于简单内容之后的问题——如何最佳结构化你的复杂UI、你的应用程序或常见问题。举个例子:像《Beginning iPhone 3 Development》这样的书告诉你如何设置一个带有顶部“切换器”视图控制器的多视图控制器应用程序,它可以在其他视图控制器拥有的视图之间进行切换。不错,但只是告诉你如何做,没有提到可能出现的问题:例如,如果我使用他们的范例切换到一个UINavigationViewController,导航栏会出现在屏幕上方而过低,因为UINavigationViewController期望成为最顶层的UIViewController(显然)。此外,委托方法(例如与方向变化有关的方法)会传递到顶部切换器视图控制器,而不是实际负责当前视图的控制器。我有解决这些问题的方法,但它们看起来像是hack,这让我感到不满意,让我觉得我漏掉了什么重要的东西。
现在我更感兴趣的是关于简单内容之后的问题——如何最佳结构化你的复杂UI、你的应用程序或常见问题。举个例子:像《Beginning iPhone 3 Development》这样的书告诉你如何设置一个带有顶部“切换器”视图控制器的多视图控制器应用程序,它可以在其他视图控制器拥有的视图之间进行切换。不错,但只是告诉你如何做,没有提到可能出现的问题:例如,如果我使用他们的范例切换到一个UINavigationViewController,导航栏会出现在屏幕上方而过低,因为UINavigationViewController期望成为最顶层的UIViewController(显然)。此外,委托方法(例如与方向变化有关的方法)会传递到顶部切换器视图控制器,而不是实际负责当前视图的控制器。我有解决这些问题的方法,但它们看起来像是hack,这让我感到不满意,让我觉得我漏掉了什么重要的东西。
我建议您查看一些开源的iPhone项目(请参见this question)。但除此之外呢?
更新
为了澄清:我想问的可以总结为“iPhone开发的技巧和注意事项”。这些技巧和注意事项对开发者很有用,但是在我看过的任何iPhone书籍等资料中都没有涉及,例如:
我正在开发一款iPad应用程序,希望只有在某些时候向用户展示UISplitViewController,但苹果似乎在说我不能这样做。是否可能?如何实现?
苹果没有给我提供方便的跨平台方式来为我的应用程序进行样式设计(例如字体调整或颜色)。我该如何处理我的应用程序样式?
由于UIViewController方法名称的不一致性(例如,viewDidUnload并不是viewDidLoad的相反,尽管名称是这样的),内存管理变得更加困难。是否有一种一致且简单的方法来整理它,并使视图控制器内存管理更少出错?
如何一致且轻松地测试我的视图控制器在收到内存警告时是否正确行为?在模拟器中模拟内存警告很容易,但如果我想要测试的UI正在显示(而且是“叶级”视图控制器),则它不会被卸载,因为它当前可见。
注意:我实际上并没有在此处提出上述问题 - 我认为我对它们有合理的答案! - 只是举例说明了这个stackoverflow问题的“好”问题。