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应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其它文件系统隔离.应用必须呆在自己的沙盒里.其它应用不能访问该沙盒. 一个程序中所有的非代码文件都可以 ...
随机推荐
- angular自己最近学的一种筛选方法
投资状态vm.statusList = [ {name:"项目状态",value:-1}, {name:"上线",value:0}, {name:"投 ...
- espcms内容页上下篇按后台手动排序号
模板文件: {%get name=plist class="did":$read.did,pid:$read.pid%} <li class="fl"&g ...
- jquery向苹果或者android发送请求
var browser={ versions:function(){ var u = navigator.userAgent, app = navigator.appVersion; return { ...
- 图片切换小demo
<body> <div class="body"><img src="bopin/images/bigImg1.jpg" widt ...
- hibernate中一对多关系中的inverse,cascade属性
举例说明: 一对多关系的两张表:boy.girl(一个男孩可以多个女朋友) boy表结构 Field Type ------ ----------- name varcha ...
- Git学习总结
master主分支合并dev分支,代码 :git merge dev ,跳出如下界面.输入:wq,(:wq命令是LINUX命令,强制写入文件并结束),可以强制合并.但为什么会跳出该界面,我也没搞清楚. ...
- Spring+SpringMvc+Mybatis框架集成搭建教程一(项目创建)
一.框架搭建环境 Spring 4.2.6.RELEASE SpringMvc 4.2.6.RELEASE Mybatis 3.2.8 Maven 3.3.9 Jdk 1.7 Idea 15.04 二 ...
- ios显示或隐藏导航栏的底线
根据产品需求要求把这个界面导航栏的底线去掉,下个控制器还需要有底线. 使用下面的代码实现 //在页面出现的时候就将黑线隐藏起来 -(void)viewWillAppear:(BOOL)animated ...
- Swift - UITableView里的cell底部分割线左侧靠边
override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, ...
- linux shell 常用指令
1. man 对你熟悉或不熟悉的命令提供帮助解释 eg:man ls 就可以查看ls相关的用法 注:按q键或者ctrl+c退出,在linux下可以使用ctrl+c终止当前程序运行. 2. ls 查看目 ...