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】自动生成html文件查看指定目录中的所有图片
获取本目录下的pic子目录中的所有图片(jpg,png,bmp,gif等,此处以jpg文件为例),然后生成一个image.html文件,打开该html文件即可在浏览器中查看pic子目录中的所有图片. ...
- html中表格元素的相关总结
表格元素相关总结: 1.在CSS中,内部表元素(如td.tr.col等)生成矩形框,这些矩形框包含内容.内边距和边框,但没有外边距,因此如果定义外边距,浏览器将忽略该定义:对于table元素,外边距有 ...
- spring aop 环绕通知around和其他通知的区别
前言: spring 的环绕通知和前置通知,后置通知有着很大的区别,主要有两个重要的区别: 1) 目标方法的调用由环绕通知决定,即你可以决定是否调用目标方法,而前置和后置通知 是不能决定的,他们只 ...
- 使用jvisualvm.exe 的Btrace插件介绍/使用教程
一.背景 在生产环境中可能经常遇到各种问题,定位问题需要获取程序运行时的数据信息,如方法参数.返回值.全局变量.堆栈信息等.为了获取这些数据信息,我们可以 通过改写代码,增加日志信息的打 ...
- Scrapy001-框架初窥
Scrapy001-框架初窥 @(Spider)[POSTS] 1.Scrapy简介 Scrapy是一个应用于抓取.提取.处理.存储等网站数据的框架(类似Django). 应用: 数据挖掘 信息处理 ...
- go:windows下用sublime Text搭建go语言开发环境
一.安装 1.安装go go安装包地址:http://pan.baidu.com/s/1hq1mrDM(进入下图中箭头所示目录中下载对应版本) * 注意go的安装路径不能包含中文 ...
- .NET 反射概述
反射 反射提供了封装程序集.模块和类型的对象(Type 类型).可以使用反射动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性.如果代码中使用了属性 ...
- Ionic常用命令行解释
原文链接 安装ionic npm install -g ionic 更新www/lib/ionic 目录的文件,如有项目中有bower,此命令会运行bower update ionic, 否则则会从C ...
- [译]SSAS下玩转PowerShell
操作SSAS数据库的方法有很多,是否有一种可以方法可以通过脚本自动去做这些事呢,比如处理分区,创建备份以及监视SSAS的运行状况. 原文地址: http://www.mssqltips.com/sql ...
- [C++][数据结构]栈(stack)的实现
对于栈的定义,前人之述备矣. 我实现的是一个stack<value>容器类,支持push,pop,top,size,empty,clear和copy construction操作. 主要的 ...