nsstring

iOS NSLog去掉时间戳及其他输出样式

百般思念 提交于 2020-02-29 08:18:01
1.一般项目中我的NSLog会在Prefix.pch文件添加如下代码,已保证在非调试状态下NSLog不工作 #ifdef DEBUG #define NSLog(...) NSLog(__VA_ARGS__) #else #define NSLog(...) #endif 2.在项目中如果没做任何处理的话会输出如下信息,前面有一个时间戳 2014 - 11 - 07 08 : 25 : 40.885 zcsy [ 673 : 8937 ] cell 的高度 258.684998 我们修改下宏如下: #ifdef DEBUG #define NSLog(FORMAT, ...) fprintf(stderr,"%s\n",[[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]); #else #define NSLog(...) #endif 经过上面的修改我们可以输出 纯净的内容如下: cell 的高度 258.684998 我们可以用更好的版本我推荐用这个打印我们的日志: #ifdef DEBUG #define NSLog(FORMAT, ...) fprintf(stderr,"%s:%d\t%s\n",[[[NSString stringWithUTF8String:__FILE__]

iOS开发debug跟release版本log屏蔽方法

我们两清 提交于 2020-02-28 11:01:12
在开发过程中一般会用到 NSLog(<#NSString *format, ...#>)来获得具体的信息。 但当我们发布app时,一步一步的去找 NSLog(<#NSString *format, ...#>),并屏蔽掉,这样比较浪费时间还很累。我们可以采用预编译的方式来简化这个问题。 1.在***-Prefix.pch里面添加 #ifdef DEBUG # define DLog(...) NSLog(__VA_ARGS__) #else # define DLog(...) /* */ #endif #define ALog(...) NSLog(__VA_ARGS__) 2.进入Xcode 4,选择菜单“Product”->“Manage Schemes”,选择一个项目,点击“Edit”,Bulid Configuration 附: 检查DEBUG标志是否正确定义,xcode一般会在debug运行配置项里面已经定义号了DEBUG标志,如果没定义我们就自己写上,以我的xcode 4 为例,如下图:   找到PreProcessor Macros 这个属性,对于Debug配置我们给他写上DEBUG,而在Release配置中把它留空。 这样我们刚才那段预处理命令就可以根据这个标志来判断我们编译的时调试版本还是发布版本,从而控制NSLog的输出。 (因为xcode 4 会把debug

不推荐使用UIDevice uniqueIdentifier-现在该怎么办?

房东的猫 提交于 2020-02-28 10:18:13
刚发现, iOS 5中 不推荐使用UIDevice uniqueIdentifier属性 ,而iOS 7及更高版本中 不提供 该 属性 。 似乎没有其他可用的方法或属性。 我们许多现有的应用都紧密依赖此属性来唯一标识特定设备。 我们将如何处理这个问题? 2011-2012 年 文档中 的建议是: 特别注意事项 不要使用uniqueIdentifier属性。 要创建特定于您的应用程序的唯一标识符,您可以调用 CFUUIDCreate 函数来创建 UUID ,然后使用 NSUserDefaults 类将其写入默认数据库。 但是,如果用户卸载并重新安装该应用程序,则该值将不同。 #1楼 我敢肯定,苹果公司已经使许多人为此感到烦恼。 我为iOS开发了一个 簿记应用程序 ,并且具有在线服务来同步在不同设备上所做的更改。 该服务维护着所有设备以及需要传播给它们的更改的数据库。 因此,了解哪些设备是重要的。 我正在使用UIDevice uniqueIdentifier跟踪设备,对于它的价值,这是我的想法。 生成UUID并存储在用户默认设置中? 没有好处,因为在用户删除应用程序时,这种情况不会持续。 如果他们稍后再安装,则联机服务不应创建新的设备记录,否则将浪费服务器上的资源,并给出两次或多次包含相同设备的设备列表。 如果用户重新安装该应用程序,将会看到列出的多个“ Bob的iPhone”。

iOS开发网络篇—数据安全

六眼飞鱼酱① 提交于 2020-02-28 08:44:58
iOS开发网络篇—数据安全 一、简单说明 1.说明 在开发应用的时候,数据的安全性至关重要,而仅仅用POST请求提交用户的隐私数据,还是不能完全解决安全问题。 如:可以利用软件(比如Charles)设置代理服务器,拦截查看手机的请求数据 “青花瓷”软件 因此:提交用户的隐私数据时,一定不要明文提交,要加密处理后再提交 2.常见的加密算法 MD5 \ SHA \ DES \ 3DES \ RC2和RC4 \ RSA \ IDEA \ DSA \ AES 3.加密算法的选择 一般公司都会有一套自己的加密方案,按照公司接口文档的规定去加密 二、MD5 1.简单说明 MD5:全称是Message Digest Algorithm 5,译为“消息摘要算法第5版” 效果:对输入信息生成唯一的128位散列值(32个字符) 2.MD5的特点 (1)输入两个不同的明文不会得到相同的输出值 (2)根据输出值,不能得到原始的明文,即 其过程不可逆 3.MD5的应用 由于MD5加密算法具有较好的安全性,而且免费,因此该加密算法被广泛使用 主要运用在数字签名、文件完整性验证以及口令加密等方面 4.MD5破解 MD5解密网站: http://www.cmd5.com 5.MD5改进 现在的MD5已不再是绝对安全,对此,可以对MD5稍作改进,以增加解密的难度 加盐(Salt):在明文的固定位置插入随机串

定制,

让人想犯罪 __ 提交于 2020-02-28 05:57:16
info. reason = [info. reason stringByTrimmingCharactersInSet :[ NSCharacterSet whitespaceCharacterSet ]]; NSArray *arr = [info. reason componentsSeparatedByString : @" " ]; // 上传铃声,转发铃声 if (arr. count >= 2 ) { self . kLabel . hidden = YES ; NSString *str = [arr objectAtIndex : 0 ]; NSString *mStr; NSRange mRan = [info. reason rangeOfString : @" 收到鲜花 " ]; if (mRan. location != NSNotFound ) { info. reason = [info. reason stringByReplacingOccurrencesOfString : @" 收到鲜花 " withString : @"" ]; } mStr = [info. reason stringByReplacingOccurrencesOfString :str withString : @"" ]; 来源: https://www.cnblogs

iOS项目之WKWebView替换UIWebView相关

笑着哭i 提交于 2020-02-27 03:58:43
在网上已经有了许多关于UIWebView替换为WKWebView的文章,所以在这里就不在多说替换的细节了,不会的可以在网上搜搜。 下面是我在项目中遇到的问题: 问题一: 在UIWebView中,网页显示(包括图片显示)比例正常,替换为WKWebView后,比例显示不正常 解决方案:直接上代码 /* 在创建WKWebView的时候,配置环境中添加下面的js语句,可以使界面自适应屏幕 */ // 自适应屏幕宽度js NSString *jSString = @"var meta = document.createElement('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width'); document.getElementsByTagName('head')[0].appendChild(meta);"; WKUserScript *wkUserScript = [[WKUserScript alloc] initWithSource:jSString injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:YES]; // 自定义配置,一般用于js调用oc方法

iOS 应用数据存储的常用方式

≡放荡痞女 提交于 2020-02-27 03:55:46
iOS 开发中,经常会有将数据存储到本地的需求。比如一些数据的缓存,或者记录下用户的账号密码,记录下下次是否自动登录等,这些都需要将数据记录到本地。iOS中,数据存储到本地的常见方式有三种: 一: 使用plist 存储到本地; 二:Preference(偏好设置) 三:归档解档。 举例介绍一下三种方式。 在介绍数据存储之前,需要先了解下iOS 中app的沙盒机制,详情见:http://www.cnblogs.com/acBool/p/5467060.html 。 方式一: 使用plist将数据存储到本地,实际上就是将数据写到一个文件中,文件中的数据是以xml格式保存。使用plist存储数据非常方便,代码如下: // 获得沙盒路径 NSString *home = NSHomeDirectory(); NSLog(@"home = %@",home); NSString *docPath = [home stringByAppendingPathComponent:@"Documents"]; // 文件路径 NSString *filePath = [docPath stringByAppendingPathComponent:@"data.plist"]; NSArray *data = @[@"test",@10,@"lalala"]; [data writeToFile

ios应用数据存储方式(XML属性列表-plist/偏好设置/归档)

只谈情不闲聊 提交于 2020-02-27 03:54:27
ios应用数据存储方式(XML属性列表-plist) 一、ios应用常用的数据存储方式 1.plist(XML属性列表归档) 2.偏好设置 3.NSKeydeArchiver归档(存储自定义对象) 4.SQLite3(数据库,关系型数据库,不能直接存储对象,要编写一些数据库的语句,将对象拆开存储) 5.Core Data(对象型的数据库,把内部环节屏蔽) 二、应用沙盒 每个iOS应用都有⾃己的应⽤沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离。应⽤必须待在⾃己的沙盒里,其他应用不能访问该沙盒(提示:在IOS8中已经开放访问) 应⽤沙盒的文件系统⽬录,如下图所示(假设应用的名称叫Layer) 模拟器应⽤用沙盒的根路径在: (apple是⽤用户名, 7.0是模拟器版本) /Users/apple/Library/Application Support/iPhone Simulator/7.0/Applications 三、应用沙盒结构分析 应⽤程序包:(上图中的Layer)包含了所有的资源文件和可执行文件 Documents:保存应⽤运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录。例如,游戏应用可将游戏存档保存在该目录 tmp:保存应⽤运行时所需的临时数据,使⽤完毕后再将相应的文件从该目录删除。应用没有运行时,系统也可能会清除该目录下的文件

数据存储常用的五种方式(一)

旧街凉风 提交于 2020-02-27 03:53:58
  iOS开发中数据存在五种存储方式之三:     1.plist(XML属性列表归档)     2.偏好设置     3.NSKeydeArchiver归档(存储自定义对象) 一、plist(XML属性列表归档)只能存取对象类文件 第一种方式:(四个文件夹都可以取出路径) 1 //获取沙盒路径 2 NSString *home = NSHomeDirectory(); 3 //获取documents的路径两种方式(其它三个文件夹也能获取) 4 NSString *path = [home stringByAppendingString:@"/documents"]; 5 NSString *path1 = [home stringByAppendingPathComponent:@"library/cache"]; 第二种方式:(仅有documents和cache能取出路径)(获取路径的时候必须写成YES,否则无法成功写入) 1 //获取cache路径,NO表示文件路径前面用“~”表示 2 NSString *cache = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES) lastObject]; 3 NSString *doucument =

UITableView 和 UITableViewController

爱⌒轻易说出口 提交于 2020-02-27 03:49:52
  UITableView:显示有多行数据的一个列。   新建一个过程:Xcode -> File -> New -> Project...,然后选择iOS -> Application -> Single View Application. Product Name为 HomePwner ,其他设置如下所示:   当使用UITableView的时候,我们必须考虑还需要什么来让这个table能在你的App上工作。 1)一个UITableView一般需要一个视图控制器来处理其在屏幕上显示的样式; 2)一个UITableView需要一个数据源; 3)一个UITableView一般需要一个委托对象,通知其他对象涉及UITableView的事件。委托可以是任何对象,只要其遵守UITableViewDelegate协议。   UITableViewController类实例满足上述三个角色,即:视图控制器、数据源和委托。当UITableViewController创建了一个UITableView视图时,UITableView的dataSource和delegate实例变量自动设置为指向UITableViewController。其关系如下所示:   创建一个UITableViewController的子类: File -> New -> File...,iOS -> Source ->