nsstring

喷枪打字动画

冷暖自知 提交于 2020-02-27 02:35:29
#import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutlet UILabel *titleLabel; @property (copy , nonatomic)NSString *contentStr; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; NSThread *thread = [[NSThread alloc]initWithTarget:self selector:@selector(animationLabel) object:nil]; [thread start]; self.contentStr = @"人生最宝贵的是生命,生命属于人只有一次。一个人的生命应当这样度过:当他回忆往事的时候,他不致因虚度年华而悔恨,也不致因碌碌无为而羞愧;在临死的时候,他能够说:“我的整个生命和全部精力,都已献给世界上最壮丽的事业——为人类的解放而斗争。”"; } - (void)animationLabel { for (NSInteger i = 0; i < self.contentStr.length; i++) { [self

iOS清除缓存功能开发

烈酒焚心 提交于 2020-02-27 01:24:38
  在APP开发中,大量的图片或消息占用系统内存,造成一堆垃圾信息,所以开发清除缓存功能就显得必不可少了。   代码段1:获取文件的大小 - (long long) fileSizeAtPath:(NSString*) filePath{ NSFileManager* manager = [NSFileManager defaultManager]; if ([manager fileExistsAtPath:filePath]){ return [[manager attributesOfItemAtPath:filePath error:nil] fileSize]; } return 0; }   代码段2:获取文件的大小 //遍历文件夹获得文件夹大小,返回多少M - (float ) folderSizeAtPath:(NSString*) folderPath{ NSFileManager* manager = [NSFileManager defaultManager]; if (![manager fileExistsAtPath:folderPath]) return 0; NSEnumerator *childFilesEnumerator = [[manager subpathsAtPath:folderPath] objectEnumerator];

iOS之 清理缓存

两盒软妹~` 提交于 2020-02-27 01:23:41
作为一个开发者,对于缓存的清理也是理所应当的需要的。这次就简单的谈一下iOS中对于缓存的清理方法。 我们清理缓存通常是在这三种方式下进行的: (1)项目中的清理缓存按钮 (2)点击退出app按钮时清理缓存 (3)手动杀死进程 (说明:我们使用苹果手机时,大部分人并不喜欢每次都去点击退出app按钮。所以客户就有了在我们手动杀死进程时,对app进行缓存清理的要求) 接下来我们就从这三种方面来分析iOS的清理缓存。 我们知道iOS应用是在沙箱(sandbox)中的,在文件读写权限上受到限制,只能在几个目录下读写文件: Documents:应用中用户数据可以放在这里,iTunes备份和恢复的时候会包括此目录 tmp:存放临时文件,iTunes不会备份和恢复此目录,此目录下文件可能会在应用退出后删除 Library/Caches:存放缓存文件,iTunes不会备份此目录,此目录下文件不会在应用退出删除 项目中的清理缓存按钮的代码就不列出了(我们可以在视图上直接添加Button,也可以在tableView上列出一个cell做清理缓存按钮),下面我直接给出清理缓存的代码 1、Caches目录的缓存一 /*--> */ /*--> */ #pragma mark - ************* Get cache size (计算数据缓存) ************* - ( NSString *

ios获取缓存文件的大小并清除缓存

我怕爱的太早我们不能终老 提交于 2020-02-27 01:21:47
移动应用在处理网络资源时,一般都会做离线缓存处理,其中以图片缓存最为典型,其中很流行的离线缓存框架为SDWebImage。 但是,离线缓存会占用手机存储空间,所以缓存清理功能基本成为资讯、购物、阅读类app的标配功能。 今天介绍的离线缓存功能的实现,主要分为缓存文件大小的获取、清除缓存文件的实现。 1. 获取缓存文件的大小 -( float )readCacheSize { NSString *cachePath = [NSSearchPathForDirectoriesInDomains (NSCachesDirectory , NSUserDomainMask , YES) firstObject]; return [ self folderSizeAtPath :cachePath]; } 由于缓存文件存在沙箱中,我们可以通过NSFileManager API来实现对缓存文件大小的计算。 // 遍历文件夹获得文件夹大小,返回多少 M - ( float ) folderSizeAtPath:( NSString *) folderPath{ NSFileManager * manager = [NSFileManager defaultManager]; if (![manager fileExistsAtPath :folderPath]) return 0 ;

iOS活动倒计时的两种实现方式

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-27 01:14:05
代码地址如下: http://www.demodashi.com/demo/11076.html 在做些活动界面或者限时验证码时, 经常会使用一些倒计时突出展现. 现提供两种方案: 一.使用NSTimer定时器来倒计时 二.使用GCD来倒计时(用GCD这个写有一个好处,跳页不会清零, 跳页清零会出现倒计时错误的) 压缩文件截图项目界面: 项目截图: 一. 使用NSTimer定时器来倒计时 主要步骤: Step1. 计算截止时间与当前时间差 Step2. 先递减时间差 倒计时-1(总时间以秒来计算) Step3. 给时分秒字符串通过递减过后的秒数,重新计算数值,并输出显示. 获取当天的字符串, 格式为年-月-日 时分秒: /** * 获取当天的字符串 * * @return 格式为年-月-日 时分秒 */ - (NSString *)getCurrentTimeyyyymmdd { NSDate *now = [NSDate date]; NSDateFormatter *formatDay = [[NSDateFormatter alloc] init]; formatDay.dateFormat = @"yyyy-MM-dd HH:mm:ss"; NSString *dayStr = [formatDay stringFromDate:now]; return dayStr; }

App启动加载广告页面思路

情到浓时终转凉″ 提交于 2020-02-27 01:11:43
需求 很多app(如淘宝、美团等)在启动图加载完毕后,还会显示几秒的广告,一般都有个跳过按钮可以跳过这个广告,有的app在点击广告页之后还会进入一个广告页面,点击返回进入首页。今天我们就来开发一个广告页面,效果如下。 效果图.gif 思路 1. 广告页加载思路。 广告页的内容要实时显示,在无网络状态或者网速缓慢的情况下不能延迟加载,或者等到首页出现了再加载广告页。所以这里我不采用网络请求广告接口获取图片地址,然后加载图片的方式,而是先将图片异步下载到本地,并保存图片名,每次打开app时先根据本地存储的图片名查找沙盒中是否存在该图片,如果存在,则显示广告页。 2. 判断广告页面是否更新。 无论本地是否存在广告图片,每次启动都需要重新调用广告接口,根据图片名称或者图片id等方法判断广告是否更新,如果获取的图片名称或者图片id跟本地存储的不一致,则需要重新下载新图片,并删除旧图片。 3. 广告页点击。 如果点击广告需要跳转广告详情页面,那么广告链接地址也需要用NSUserDefaults存储。注意: 广告详情页面是从首页push进去的 。 4.广告页的显示代码可以放在AppDeleate中,也可以放在首页的控制器中。如果代码是在AppDelegate中,可以通过发送通知的方式,让首页push到广告详情页。 5.广告页面的底部和启动图的底部一般都是相同的

iOS学习13之OC NSString类

余生长醉 提交于 2020-02-26 16:31:13
C语言 中,字符串是有 char ( ASC||码 )字符组成。 OC 中,字符串是由 unichar ( Unicode )字符组成。 1、字符串(NSString)   NSString : 不可变字符串 ,即:创建以后,内容和长度 不能更改 。   NSMutableString : 可变字符串 , 即:创建以后,内容和长度 可以修改 。 2、不可变字符串创建  1> 初始化方法 创建对象   - ( instancetype )initWithFormat:( NSString *)format, ... NS_FORMAT_FUNCTION ( 1 , 2 );    1 NSString *string1= [[NSString alloc] initWithFormat: @" hello wold " ];  2> 便利构造器 创建对象   + ( instancetype )stringWithFormat:( NSString *)format, ... NS_FORMAT_FUNCTION ( 1 , 2 );    1 NSString *string2 = [NSString stringWithFormat: @" hell wold " ];  3> 字面量 创建对象    1 NSString *string3 = @" hello kitty "

OC: NSString、NSArray、NSNumber

我与影子孤独终老i 提交于 2020-02-26 15:51:02
数组参考: 参考1 参考2 参考3 //字符串 //1.获取字符串的长度: //表情符号最少占两个字节 NSString * s = @"中文字符串😃nothing is imposible"; unsigned long len = [s length]; NSLog(@"%lu",len); //字符串的前缀 后缀 hasPrefix hassuffix NSString * strUrl = @"http://www.baidu.com"; //判断字符串是否是以某字符串开头,如果是则返回 yes 否则返回 No BOOL isStart = [strUrl hasPrefix:@"http"]; //用 hasSuffix 来判断某个字符串是否是以某个字符串为结尾 BOOL isEnd = [strUrl hasSuffix:@"com"]; //判断网址是否正确 if(isEnd && isStart){ NSLog(@"这个网址是正确的"); } NSLog(@"%d",isEnd); NSLog(@"%d",isStart); //字符串里的某一部分(子字符串) // 输入一个字符串判断是否是以 WWW 开头 char temp[10] = {}; printf("请输入一个字符串"); scanf("%s",temp); NSString * hh =

活跃用户数量偏少?让我们从代码上分析一下原因!

做~自己de王妃 提交于 2020-02-26 15:09:26
最近有网友发现友盟的数据统计里面,活跃用户的数量有点不大对劲,跟启动次数相比,严重偏少。sdk的使用方式没啥好说的,就那么简单几步,应该不会是sdk设置的问题。于是就从友盟关于活跃用户的定义开始,着手分析这个问题。 活跃用户的定义:打开应用的用户即为活跃用户,不考虑用户的使用情况。 从上面的文章,了解到Umeng里面对用户的定义:友盟将一个独立的设备视为一个用户,然而每个独立的用户是通过UMID来进行唯一标识的。然而UMID又是神马鬼东西?简单来说就是友盟会在第一次安装的时候生成一个UMID,当ID生成以后友盟会尽量保证这个UMID不会发生变化。 在应用对应的存储目录下面,我们可以找到这个UMID的身影: ngeIdentity.json这个文件来说,cat一下里面的内容,应该可以看到: 笔者发现公司里多台设备的UMID都居然是一个相同的UMID值,WTF!!!也同样是上面这串神秘的代码:528c8e6cd4a3c6598999a0e9df15ad32。 这个时候就需要查一下UMID的生成方式了,从上面那篇UMID方案解析的文章中,可以了解到Android系统中与UMID相关的几个ID:imei、mac地址、android_id。有了这些关键点,我们就可以开始去反编译友盟的sdk包并进行下一步的搜索了(这里反编译了友盟最新的jar包:umeng-analytics-v6.0.1

NSString NSMutableString

谁说胖子不能爱 提交于 2020-02-26 14:02:12
// NSString // 代开 API 文档 //Xcode -> help - Documentation and API Reference // 快速打开 API //alt(option) + 鼠标左键 // 快速进入头文件 //command + 鼠标左键 // NSString 是 oc 中的不可变字符串类 , 被创建后 , 不能修改 // 常用方法 //1. 创建字符串 NSString *str1 = @"iPhone" ; NSLog ( @"%@" , str1); NSString *str2 = [[ NSString alloc ] init ]; NSLog ( @"%@" , str2); NSString *str3 = [[ NSString alloc ] initWithString : @"iPhone" ]; NSLog ( @"%@" , str3); // NSString *str4 = [[NSString alloc] initWithString:nil]; // NSLog(@"%@", str4); error NSString *str5 = [[ NSString alloc ] initWithFormat : @"%@5s" , str1]; NSLog ( @"%@" , str5); // NSString