//单例设计模式
/*
1、单例是一种设计模式 是开发人员在开发过程中总结出来的简单方法
2、 如果某个对象在整个工程中有且只有一个(唯一的)就必须使用单例设计模式创建该对象
3、单例设计模式创建的对象在整个工程的任意位置任意时间都是共享的 相当于全局变量 作用域在整个工程
4、整个工程中可能创建多个对象指针 但是对象任意一个对象指针 指向的对象都是同一个 也就是指针指向同一个内存空间
5、单例方法只有在第一次调用的时候创建一个对象 后面多次调用都不会创建新的对象 这样就确保该对象在整个工程中有且只有一个的
6、单例方法是一个类方法 返回值是一个对象指针
7、单例方法的命名格式:share/default+类名
*/

//定义单例方法

#import <Foundation/Foundation.h>
@interface Forum : NSObject
{
NSMutableArray*infoArr; //存放所有留言信息
}
//确保对象在整个工程中是唯一的
+(Forum*)defaultForum;
//添加内容
-(void)addMessageInForum:(NSDictionary*)info;
//内容包括两部分:一部分是用户的姓名 一部分是用户的留言信息 //显示所有的留言内容
-(void)showALLinfo; @end
#import "Forum.h"
@implementation Forum -(id)init //初始化 数组infoArr
{
if (self=[super init]) {
infoArr=[[NSMutableArray alloc]init];
}
return self;
}
+(Forum*)defaultForum
{
static Forum*forum=nil;
if (forum==nil) {
forum=[[Forum alloc]init];
}
return forum;
}
-(void)addMessageInForum:(NSDictionary *)info
{
[infoArr addObject:info];
}
-(void)showALLinfo
{
for(id character in infoArr)
{ NSArray*keys=[character allKeys];
NSLog(@"%@:%@",[keys lastObject],[character objectForKey:[keys lastObject]]);
} } @end

//Student 类

#import <Foundation/Foundation.h>

@interface Student : NSObject
@property(nonatomic,retain)NSString*name; -(void)write:(NSString*)message;
@end

//单例方法的引用

#import "Student.h"
#import "Forum.h"
@implementation Student -(void)write:(NSString*)message
{
Forum*newarr=[Forum defaultForum];
NSMutableDictionary*dic=[NSMutableDictionary dictionaryWithObjectsAndKeys:message,self.name, nil];
[newarr addMessageInForum:dic];
} @end

//Teacher类 同上

//主函数调用

#import <Foundation/Foundation.h>
#import "Forum.h"
#import "Teacher.h"
#import "Student.h"
int main(int argc, const char * argv[]) {
@autoreleasepool { //1、添加信息(信息包括 用户名称 用户留言)
//2、将信息所有内容显示出来
//3、添加内容的类有两个,一个老师类 一个学生类
Teacher*t1=[[Teacher alloc]init];
t1.name=@"lijie";
[t1 writeinfo:@"1503"];
Teacher*t2=[[Teacher alloc]init];
t2.name=@"sun";
[t2 writeinfo:@"飘过"]; Student*s1=[[Student alloc]init];
s1.name=@"xiao";
[s1 write:@"hello"];
Student*s2=[[Student alloc]init];
s2.name=@"guang";
[s2 write:@"nimenhao"]; Forum*forum=[Forum defaultForum];
[forum showALLinfo]; }
return 0;
}

//打印结果:

2016-12-23 10:52:35.527 7.4论坛留言[18397:655774] lijie:1503
2016-12-23 10:52:35.528 7.4论坛留言[18397:655774] sun:飘过
2016-12-23 10:52:35.528 7.4论坛留言[18397:655774] xiao:hello
2016-12-23 10:52:35.528 7.4论坛留言[18397:655774] guang:nimenhao

ios-UserDefaults的更多相关文章

  1. iOS开发系列--Swift 3.0

    概述 从写第一篇Swift文章的时候到现在Swift已经从1.2发展到了今天的3.0,这期间由于Swift目前还在发展阶段并不能向下兼容,因此第一篇文章中的部分代码在当前的Xcode环境中已经无法运行 ...

  2. iOS开发之记录用户登录状态

    iOS开发之记录用户登录状态 我们知道:CoreData的配置和使用步骤还是挺复杂的.但熟悉CoreData的使用流程后,CoreData还是蛮好用的.今天要说的是如何记录我们用户的登陆状态.例如微信 ...

  3. iOS开发之使用XMPPFramework实现即时通信(二)

    上篇的博客iOS开发之使用XMPPFramework实现即时通信(一)只是本篇的引子,本篇博客就给之前的微信加上即时通讯的功能,主要是对XMPPFramework的使用.本篇博客中用到了Spark做测 ...

  4. iOS之数据持久化方案

    概论 所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据.在iOS开发中,有很多数据持久化的方案,接下来我将尝试着介绍一下5种方案: plist文件(属性列表) ...

  5. iOS 多快好省的宏定义

    http://my.oschina.net/yongbin45/blog/150149 // 字符串:#ifndef nilToEmpty#define nilToEmpty(object) (obj ...

  6. iOS 两行代码解决数据持久化

    在实际的iOS开发中,有些时候涉及到将程序的状态保存下来,以便下一次恢复,或者是记录用户的一些喜好和用户的登录信息等等. 这就需要涉及到数据的持久化了,所谓数据持久化就是数据的本地保存,将数据从内存中 ...

  7. iOS的数据持久化

    所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据.在iOS开发中,有很多数据持久化的方案,接下来我将尝试着介绍一下5种方案: plist文件(属性列表) pr ...

  8. iOS通用的MVC模式项目框架MobileProject

    最近项目比较不赶的情况下,决定把一些通用.常用的内容集成在一个项目框架中,意在新项目中可以快速搭建:其实经过几个项目后,总是有一些重复的创建工作,可以使用本项目的内容直接进行开发:采用的是MVC的分层 ...

  9. IOS整体项目层级构建

    在创建IOS项目时,若有一个比较明确的层级架构,将对于今后代码的维护或者功能的扩展很有帮助:本文将通过一个实例来展现我对于层级的一些观点:里面有一些零碎的知识点可能无法全部介绍,到时提供源代码进行下载 ...

  10. iOS中的存储方式

    1.Plist 1.1 了解沙盒 每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其它文件系统隔离.应用必须呆在自己的沙盒里.其它应用不能访问该沙盒. 一个程序中所有的非代码文件都可以 ...

随机推荐

  1. SQLPULS : 密码中有特殊字符的处理方法

    前日在使用SQLPLUS访问oracle数据库时,系统提示密码过期,需要更新密码.于是不假思索的修改密码为xxx@2016(估计当时脑子抽风了),造成了杯具的开始. 再次进入SQLPLUS,输入用户名 ...

  2. cf595d

    题意:给出一个轮子,上面有一个随着它转动的传感器在圆周上,给出一个指定距离m,和轮子向前行进的速度v以及轮子的半径r.问让传感器通过该距离最少需要多少时间. 分析:首先我们列出传感器行进距离与时间的轮 ...

  3. NavigationController

    前面的一篇文章<iOS开发16:使用Navigation Controller切换视图>中的小例子在运行时,屏幕上方出现的工具栏就是Navigation Bar,而所谓UINavigati ...

  4. iOS 设置非ARC类

    用-fno-objc-arc标记来禁用在ARC工程那些不支持ARC的文件的ARC用-fobjc-arc标记启用非ARC工程中支持ARC的文件

  5. 解决 SVN Skipped 'xxx' -- Node remains in conflict

    svn 提交报错 提交命令: svn update 提示代码: Skipped 'ApiController.php' -- Node remains in conflict At revision ...

  6. Linux下安裝Oracle database內核參數設置

    參考:1529864.1 ************************************************** RAM                                  ...

  7. SQL注入攻防入门详解(2)

    SQL注入攻防入门详解 =============安全性篇目录============== 毕业开始从事winfrm到今年转到 web ,在码农届已经足足混了快接近3年了,但是对安全方面的知识依旧薄弱 ...

  8. Tastypie与Backbone交互

    上回玩到Tastypie与jQuery交互,那么现在接着玩玩Tastypie与Backbone.js交互 先把上篇的template文件:D:\project\tastypie\mysite\blog ...

  9. WSDL项目---添加头信息和附件

    用于底层协议的SOAP请求是HTTP,可以添加两个自定义HTTP头(例如用于身份验证或会话)和附件. 让我们看一下这两个. 1. 自定义HTTP标头 直接添加自定义HTTP头: 我们已经添加了自定义内 ...

  10. 启动mysql服务 报1067 错误

    启动mysql 报1067 错误         一般报1067错误,先看一下data/my.ini配置文件 中的路径 datadir ,log-bin ,log-error 报1067错误原因 多种 ...