iOS中MVC常用的结构策略

模型

  • 概念

    • 专门用来存放数据的对象
  • 特点
    • 一般直接继承自NSObject
    • 在.h文件中声明一些用来存放数据的属性
  • 模型定义示例
@interface Shop : NSObject
/** 名字 */
@property (nonatomic, strong) NSString *name;
/** 图标 */
@property (nonatomic, strong) NSString *icon;
@end
  • 字典转模型示例
Shop *shop = [[Shop alloc] init];
shop.name = dict[@"name"];
shop.icon = dict[@"icon"];

注释

// 单行注释
/* */ 多行注释
/** */ 文档注释

@property的使用策略

  • assign

    • 基本数据类型枚举结构体等非OC对象类型
  • weak
    • OC对象类型(比如NSArray、NSDate、NSNumber、模型类)
  • strong
    • OC对象类型(比如NSArray、NSDate、NSNumber、模型类)
    • 一个对象只要有强指针引用着,就不会被销毁
  • copy
    • 一般用在NSStringblock类型上

通过纯代码自定义控件

  • 继承自系统自带的控件,写一个属于自己的控件
  • 目的:封装控件内部的细节,不让外界关心
  • 步骤
    • 新建一个继承UIView的类
    • initWithFrame:方法中添加子控件
    • layoutSubviews方法中设置子控件的frame
      • 一定要调用[super layoutSubviews];
    • 提供一个模型属性,重写模型属性的set方法
      • 在set方法中取出模型属性,给对应的子控件赋值

通过xib自定义控件

  • 新建一个继承UIView的类
  • 新建一个xib文件(xib的文件名最好跟控件类名一样)
    • 添加子控件、设置子控件属性
    • 修改最外面那个控件的class为控件类名
    • 将子控件进行连线
  • 提供模型属性,重写模型的set方法
    • 在set方法中给子控件设置数据

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 07-08

iOS中MVC常用的结构策略的相关文章

iOS中一些 常用的第三方库

转自ibireme的博客 做iOS开发总会接触到一些第三方库,这里整理一下,做一些吐槽. 目前比较活跃的社区仍旧是Github,除此以外也有一些不错的库散落在Google Code.SourceForge等地方.由于Github社区太过主流,这里主要介绍一下Github里面流行的iOS库. 首先整理了一份Github上排名靠前的iOS库(大概600个repos) 除了逛一下每日/每月流行之外,也可以到这里来看一下整个iOS Repos的排名. 下面是一些比较流行的第三方库: HTTP 相比较之下

iOS中UITabelView的层级结构

在iOS7以前,iOS中UITabelView的层级结构 IOS6:(your view)-> UITableViewContentView-> UITableViewCell-> UITableView 在iOS7以后,iOS中UITabelView的层级结构 IOS7:(your view)-> UITableViewCellContentView-> UITableViewCellScrollView-> UITableViewCell-> UITableV

iOS中MVC等设计模式详解

iOS中MVC等设计模式详解 在iOS编程,利用设计模式可以大大提高你的开发效率,虽然在编写代码之初你需要花费较大时间把各种业务逻辑封装起来.(事实证明这是值得的!) 模型-视图-控制器(MVC)设计模式是被大家广为熟悉和使用的模式,实际上在移动开发中尤其ios开发中,这种模式被发挥到淋漓尽致 MVC设计模式包括三个部分:模型.视图和控制器. 模型包含数据.信息,逻辑,或对象被认为是部分的业务层的iOS应用. 视图包含所有的用户信息的组件,如文本区域,按钮,滑块,被认为是表示层的一个iOS应用.

Lua中的常用语句结构以及函数

1.Lua中的常用语句结构介绍 --if 语句结构,如下实例: gTable = {"hello", 10} if nil ~= gTable[1] and "hello" == gTable[1] then print("gTable[1] is" , gStringTable[1]) elseif 10 == gTable[2] then print("gTable[2] is", gTable[2]) else prin

关于iOS中MVC和MVVM的一些思考

事情从一般开发中一个massive viewController说起,一个巨大的vc一般少则上千行代码,多则上万行. 这中情况下对代码的维护有致命性的障碍,个人亲身体验. 当你试着从6000行的代码中去找到一个网络请求,找到相关的实现逻辑,这已经能够让你眼花缭乱的. 更进一步,如果你打算对某个逻辑,某个场景进行测试,那事情的困难程度非常大. 再者,如果你想重用某一部分的场景逻辑,那几乎不可能,因为所有的代码都耦合在一个vc中了. 为什么会造成一个vc的代码这么多,这么复杂呢? 一般有以下原因:

iOS中MVC设计模式

在组织大型项目的代码文件时,我们常用MVC的思想.MVC的概念讲起来非常简单,就和对象(object)一样.但是理解和应用起来却非常困难.今天我们就简单总结一下MVC设计理念. MVC(Model View Controller)模型(model)-视图(view)-控制器(controller):MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器.使用MVC是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式.比如一批统计数据你可以分别用柱状图.

总结 iOS中一些常用的小方法

一.改变状态栏的颜色: (1).在项目 Info plist 里面添加:View controller-based status bar appearance 设置为 NO (2).在项目的BaseViewController 里面添加方法: // 设置状态栏 颜色为白色 if (iOS7Later) { // 判断是否是IOS7 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent a

iOS中NSString常用操作合集

//1.创建常量字符串. NSString *astring = @"This is a String!"; //2.创建空字符串,给予赋值. NSString *astring = [[NSString alloc] init]; astring = @"This is a String!"; [astring release]; NSLog(@"astring:%@",astring); // NSString *astring = [[NS

IOS中Socket常用处理

001    /* Send TCP transport data packet */     002    void     003    tcp_data_send(NSOutputStream *os, void *data, int length)     004    {     005        int sent, total = 0;     006        while (total < length) {     007            sent = [os wr