Model object

翻译 2016年08月29日 18:16:56

原文地址:https://developer.apple.com/library/ios/documentation/General/Conceptual/DevPedia-CocoaCore/ModelObject.html#//apple_ref/doc/uid/TP40008195-CH31-SW1


模型对象是一种包含应用程序的数据的对象,提供对该数据的访问,并实现了对数据的操作的逻辑。模型对象扮演模型视图控制器设计模式所定义的三个角色之一。(其他两个角色扮演的是视图和控制器对象)任何属于应用程序的持久状态的数据(无论是持久状态存储在文件或数据库)都应属于模型对象,当这些数据加载到应用程序中以后。

因为模型对象代表了一个特定的问题域的知识,当相应问题域的问题发生时他们可以被重用。理想情况下,一个模型对象应该和显示它们数据并允许用户编辑这些数据的视图对象没有直接的联系,换句话说,它不应该关注用户界面和展示问题。



一个精心设计的模型类
一个模型类-一个产生模型对象的类-通常是NSObject的子类,或者,如果你是利用Core Data 技术,那么他就是NSManagedObject的子类。创建一个模型对象,定义它当你需要一个基类的时候,并参考Cocoa命名规范。例如,使用一个小写字母开头来定义实例变量,属性,方法的名称,并嵌入大写字母开头的单词。
当您实现您的模型子类时,您应该考虑类设计的以下几个方面:

  • 实例变量.  您声明实例变量以持有应用程序的封装数据。实例变量可以是对象,标量值,或结构体,如nsrange。权衡使用对象或非对象类型,和对象的可变性是一个需要考虑的问题。

  • 存取器方法和声明的属性.   存取器方法和声明属性提供封装保存方式因为他们间接访问对象的实例数据。存取器方法通常获取和设置实例变量的值(也是俗称的getter和setter方法)。声明的属性是语言水平的便利,允许运行时合成类的存取方法。存取器和属性的一个重要的角色是管理对象内存。为此,这是实现getter方法和setter方法的推荐形式。

  • 键-值 编码. 键值编码是一种机制,可以让客户端使用属性名称作为键访问对象的属性。它被Core Data和Cocoa的其他地方使用。存取器方法的命名(含蓄地,声明属性)是这个机构的一个因素。

  • 初始化和释放. 在大多数情况下,一个模型类实现初始化方法来设置它的实例变量为合理的初始值。它应该遵循的标准形式的初始化方法。它还应该确保在其dealloc方法中释放任何持有对象值的实例变量。

  • 对象的编码. 如果你希望你的模型类的对象被归档,确保类编码和解码的对象的实例变量。

  • 对象赋值. 如果您希望客户复制您的模型对象,您的类应该实现对象复制。



Inside The C++ Object Model

  • 2009年12月18日 18:09
  • 8.1MB
  • 下载

Inside C++ Object Model

  • 2011年11月29日 17:15
  • 741KB
  • 下载

sdk2003 COM (Component Object Model)

  • 2011年08月26日 16:40
  • 3.5MB
  • 下载

Component Object Model

COM:The Component Object Model 组件对象模型 COM组件是遵循COM规范编写、以Win32动态链接库(DLL)或可执行文件(EXE)形式发布的可执行二进制代码,能够...
  • tz2101
  • tz2101
  • 2015-08-18 11:14:47
  • 1034

Inside the C++ Object Model.pdf

  • 2010年10月14日 13:55
  • 9.11MB
  • 下载

Inside the C++ Object Model中文+英文版

  • 2008年05月30日 20:08
  • 9.04MB
  • 下载

Json Object转Model, Model、DataTable转Json Object (Jayrock技巧)

    本文假定读者有一定的Ext 控件的使用经验...    看过Ext - EditGridPanel实现效果的朋友会很惊讶,一个Grid就能实现所有增删改查功能。在展示给客户看时,让你的表现得很...
  • Lisliefor
  • Lisliefor
  • 2008-04-25 14:34:00
  • 6828

Inside The c++ Object Model 读书笔记

我们学校拿c++来作为编程入门的语言实在是愚蠢。 一是即使只是入门,这门语言也够复杂。倒不如用python或java。 二是学校压根没那么多老师是写c++的,那些抱着我学过其他语言教c++也差不多的心...
  • u013571100
  • u013571100
  • 2014-01-28 10:00:45
  • 880

深度探索C.对象模型]Inside The C++ Object Model.pdf

  • 2013年04月16日 13:44
  • 13.75MB
  • 下载

Attempt to set model object on null model of component

1.wicket开发web项目是遇到这个异常。
  • ken_niuliqiang
  • ken_niuliqiang
  • 2014-05-10 01:44:03
  • 811
收藏助手
不良信息举报
您举报文章:Model object
举报原因:
原因补充:

(最多只允许输入30个字)