首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS体系结构和组件

iOS体系结构和组件
EN

Stack Overflow用户
提问于 2012-08-12 04:44:35
回答 2查看 1.5K关注 0票数 2

很长一段时间以来,我一直在研究目标c类的例子,看斯坦福的讲座,并玩一些代码来掌握创建iOS应用程序的诀窍。

然而,有一些事情我找不到一个很好的答案:

  1. 我如何正确地将我的层分开?我理解MVC结构,并看到了一些为模型创建类别以实现业务逻辑的示例。通过丰富模型或创建专用类(例如,验证用户、从json提取模型、组订单),这是正确的方法吗?
  2. 视图应该有多聪明?我是否可以创建一个显示联系人的视图(通过分配Contact属性),或者应该为所有联系人字段创建单独的属性,或者视图应该通过委托调用来请求它的信息?
  3. 我在我的应用程序中使用了一个故事板。在我的屏幕上,我想要一个导航条,比如说一个显示订单的视图。在其他屏幕上,我想重用order视图。

代码语言:javascript
复制
- How can I re-use the order-view's ViewController and View in other ViewControllers?
- If I have 4 screens with the same look-and-feel, do I have to simply copy them in the Storyboard? This seems like a pain to main, what if I want to change my background? Or add a button to all of the views? When I create a setup-wizard I don't want to define the look-and-feel for every screen separately.   

来自C#背景的我可能必须进入目标-c思维模式:)

在这方面任何帮助都会很好。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-12 05:44:22

1) ObjC--类别很容易扭曲你对面临的主要问题的理解。ObjC-类别是完全不必要的。您可以通过子类、对象组合、实际模型中的其他方法或控制器或视图中的某些定制来处理这些扩展。因此,如果您需要格式化数据(例如,模型中存在的数据)以在视图中显示--该任务通常会落在控制器中。就您提供的示例而言:您可以在简单的情况下选择模型请注意,这些类可能是附属类,它们只生成一个模型,或者它们可能是抽象类的多个具体组合。并不是所有的东西都需要在、M-或-V-或-C的定义中直接着陆。您可以在ObjC中使用许多设计模式。将MVC视为Cocoa通常使用的模式--您需要了解它们,您需要知道如何对这些类型进行子类和扩展,但是随着实现逐渐远离Cocoa的库(例如,随着复杂性的增加),这些模式将失去主导地位。

2)他们可以是聪明的。但是,在MVC下,您希望将其实现集中在视图/表示方面。表示信息集合的视图实际上可以执行一些任务,这些任务通常是为控制器保留的--但是,您通常会放弃这样做的实现是一个专用的MONContactView。如果你走这条路,你通常会这样做,以便于重用或实现一个简单的界面。显示有关Contact的信息可能非常复杂--在简单的场景中,这些任务通常由控制器处理。具体来说,MONAwesomeContactView可能不像MONAwesomeContactViewController那么复杂(例如在SLOC中)(除非您有一些非常特殊的绘图或布局要执行)。更常见的做法是设置控制器的联系人,并让控制器将联系人数据推送到视图的字段。同样,对于一个非常专门的子类--在某些情况下,视图可以很好地保持自己的控制器。

( 3a)创建一个类的多个实例没有什么问题。

3b)不需要复制。当发现复制时,我将实现推到实际代码中--程序可以根据需要应用外观和感觉,或者根据需要添加或操作子视图。当然,它们不会出现在Xcode的NIB编辑器中。当然还有其他的方法,但是这种复制经常让我把实现转移到编译的代码上。实现两者之间的良好平衡并不是那么困难(就我个人而言,我的大部分观点都是以编程方式完成的,而不是使用NIB)。

票数 5
EN

Stack Overflow用户

发布于 2012-08-12 05:39:24

  1. 这是一个非常抽象的问题,还不清楚“层”是什么意思。是的,您应该在适当的情况下创建自己的类,但是类别也给了您向现有类添加功能的选项。如果你能更具体地回答这个问题,提供一个更好的答案就更容易了。
  2. 这是一个判断的决定。如果您想创建一个视图类,它知道如何显示联系人类型的实例,这在我的书中是可以的。不过,如果该视图知道联系人存储在应用程序中的位置,那就不太好了。
  3. 记住,故事板中的东西是对象,而不是类。你不想重复使用另一个场景中的一个视图--这意味着在场景之间共享一个视图,这实际上是行不通的。如果您想在多个地方使用相同的order视图,那将是创建类的一个很好的候选。另一方面,您可以设置您的故事板,以便几个不同的场景都过渡到同一个场景。例如,如果您希望应用程序的不同部分能够显示显示订单的场景,您可以这样做。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11919794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档