ios-UserDefaults
//单例设计模式
/*
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的更多相关文章
- iOS开发系列--Swift 3.0
概述 从写第一篇Swift文章的时候到现在Swift已经从1.2发展到了今天的3.0,这期间由于Swift目前还在发展阶段并不能向下兼容,因此第一篇文章中的部分代码在当前的Xcode环境中已经无法运行 ...
- iOS开发之记录用户登录状态
iOS开发之记录用户登录状态 我们知道:CoreData的配置和使用步骤还是挺复杂的.但熟悉CoreData的使用流程后,CoreData还是蛮好用的.今天要说的是如何记录我们用户的登陆状态.例如微信 ...
- iOS开发之使用XMPPFramework实现即时通信(二)
上篇的博客iOS开发之使用XMPPFramework实现即时通信(一)只是本篇的引子,本篇博客就给之前的微信加上即时通讯的功能,主要是对XMPPFramework的使用.本篇博客中用到了Spark做测 ...
- iOS之数据持久化方案
概论 所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据.在iOS开发中,有很多数据持久化的方案,接下来我将尝试着介绍一下5种方案: plist文件(属性列表) ...
- iOS 多快好省的宏定义
http://my.oschina.net/yongbin45/blog/150149 // 字符串:#ifndef nilToEmpty#define nilToEmpty(object) (obj ...
- iOS 两行代码解决数据持久化
在实际的iOS开发中,有些时候涉及到将程序的状态保存下来,以便下一次恢复,或者是记录用户的一些喜好和用户的登录信息等等. 这就需要涉及到数据的持久化了,所谓数据持久化就是数据的本地保存,将数据从内存中 ...
- iOS的数据持久化
所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据.在iOS开发中,有很多数据持久化的方案,接下来我将尝试着介绍一下5种方案: plist文件(属性列表) pr ...
- iOS通用的MVC模式项目框架MobileProject
最近项目比较不赶的情况下,决定把一些通用.常用的内容集成在一个项目框架中,意在新项目中可以快速搭建:其实经过几个项目后,总是有一些重复的创建工作,可以使用本项目的内容直接进行开发:采用的是MVC的分层 ...
- IOS整体项目层级构建
在创建IOS项目时,若有一个比较明确的层级架构,将对于今后代码的维护或者功能的扩展很有帮助:本文将通过一个实例来展现我对于层级的一些观点:里面有一些零碎的知识点可能无法全部介绍,到时提供源代码进行下载 ...
- iOS中的存储方式
1.Plist 1.1 了解沙盒 每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其它文件系统隔离.应用必须呆在自己的沙盒里.其它应用不能访问该沙盒. 一个程序中所有的非代码文件都可以 ...
随机推荐
- python虚拟机中的异常流控制
异常:对程序运行中的非正常情况进行抽象.并且提供相应的语法结构和语义元素,使得程序员能够通过这些语法结构和语义元素来方便地描述异常发生时的行为. 1.Python中的异常机制: 1.1Python虚拟 ...
- 【GoLang】golang 中 defer 参数的蹊跷
参考资料: http://studygolang.com/articles/7994--Defer函数调用参数的求值 golang的闭包和普通函数调用区别:http://studygolang.com ...
- jstl catch if choose标签
catch标签: catch标签用来处理异常 属性: * var :用来出现异常保存到的变量. 代码: <c:catch var="e"> <% int i = ...
- mount挂载问题
安装nfs-utils即可
- 启动Tomcat报异常host-manager does not exist or is not a readable directory
前几天重新安装了Tomcat6,安装完Tomcat6后在wepapps下面会有一些tomcat自带的项目(root.manager.host- manager等几个),这几天项目没什么用我就删掉了,后 ...
- React学习笔记-2-什么是jsx?如何使用jsx?
什么是jsx? JSX是JavaScript XML 这两个单词的缩写,xml和html非常类似,简单来说可以把它理解成使用各种各样的标签,大家可以自行 百度.所以jsx就是在javascri ...
- 如何让页眉随章节的不同而变化(Word 2010)
在一般情况下,我们将页眉设置完成后,所有章节的页眉都是一样的. 但在某些时候,我们需要让不同的章节拥有各自不同的页眉.那么该如何设置呢? 1. 我们以下图的文件为例,该文件一共包括4个实验,暂未设置页 ...
- Linux虚拟机添加新硬盘的全程图解
查看网的文章,我将在vm虚拟机LinuxRedhat中添加一个新的硬盘, 过程大致如下: 1.选择"VM"----"setting"并打开,将光标定位在hard ...
- Jetty使用教程(一)——开始使用Jetty
一.Jetty简介 1.1 什么是Jetty Jetty是一个提供HHTP服务器.HTTP客户端和javax.servlet容器的开源项目. 这个入门教程分为五个部分: 第一部分部分重点介绍如何使 ...
- 基于Libevent的HTTP Server
简单的Http Server 使用Libevent内置的http相关接口,可以很容易的构建一个Http Server,一个简单的Http Server如下: #include <event2/e ...