iOS开发——淫技篇&iOS开发中各种淫技总结(三)

iOS开发中各种淫技总结(三)

一:send和awk解释

  • sed -n p filenamesed ----------------------------是一个流编辑器(stream editor)
  • awk ‘BEGIN {print “Hellow"}‘awk --------是一种用于处理文本的编程语言工具。

二:传值方式总结

  • KVO底层会动态长生新的类,只能坚挺属性(一个对象的属性能背多个兑现监听,一个对象能监听多个对象的其他属性)
    • kvc/kvo底层是基于runtime
  • 代理,规范,代码多:一对一
  • 通知,发送和接收:一对多(一个通知能被多个对象接受,一个对象能接受多个通知)

三:block简单小结

bloack时基于指针和函数指针的,指向结构体的指针!外面使用__block之后里面能修改值,是因为block将地址传进去了

默认在栈里面,对block做一次copy操作就能将它放到堆里面并且一致使用它,还有一种方法是Block_copy(blockname)非Arc里面

四:swift代码更新:转2.0

Xcode 7中将代码转换成Swift 2的工具。该工具位于在Xcode的Edit菜单下--Convert > To Latest Swift Syntax。

五:使用GTMBase64编码解码字符串

  • GTMDefines.h
    GTMBase64.h
    GTMBase64.m

你可以在这里找到这三个文件(GTMDefines.h在第二页,点击右上角的next按钮即可跳转到第二页)

六:编解码函数(可以编解码字符串、图片、视频:filePath换成相应的即可):

从模拟器和真机的Documents路径下读取文件,编码后写入文件;读出来解码

// 加密函数

 1 -(void)func_encodeFile
 2
 3 {
 4
 5     //NSString *path = [NSHomeDirectory() stringByAppendingFormat:@"/Documents/test.png"];
 6
 7     NSString *filePath = [NSHomeDirectory() stringByAppendingFormat:@"/Documents/iphone4.mov"];
 8
 9
10
11     //文件路径转换为NSData
12
13     NSData *imageDataOrigin = [NSData dataWithContentsOfFile:filePath];
14
15
16
17     // 对前1000位进行异或处理
18
19     unsigned char * cByte = (unsigned char*)[imageDataOrigin bytes];
20
21     for (int index = 0; (index < [imageDataOrigin length]) && (index < 1000); index++, cByte++)
22
23     {
24
25          *cByte = (*cByte) ^ arrayForEncode[index];
26
27     }
28
29     //对NSData进行base64编码
30
31     NSData *imageDataEncode = [GTMBase64 encodeData:imageDataOrigin];
32
33     [imageDataEncode writeToFile:filePath atomically:YES];
34
35 }

// 解密函数

 1 -(void)func_decodeFile
 2
 3 {
 4
 5     //NSString *filePath = [NSHomeDirectory() stringByAppendingFormat:@"/Documents/test.png"];
 6
 7     NSString *filePath = [NSHomeDirectory() stringByAppendingFormat:@"/Documents/iphone4.mov"];
 8
 9
10
11     // 读取被加密文件对应的数据
12
13     NSData *dataEncoded = [NSData dataWithContentsOfFile:filePath];
14
15
16
17     // 对NSData进行base64解码
18
19     NSData *dataDecode = [GTMBase64 decodeData:dataEncoded];
20
21
22
23     // 对前1000位进行异或处理
24
25     unsigned char * cByte = (unsigned char*)[dataDecode bytes];
26
27     for (int index = 0; (index < [dataDecode length]) && (index < 10); index++, cByte++)
28
29     {
30
31         *cByte = (*cByte) ^ arrayForEncode[index];
32
33     }
34
35
36
37     [dataDecode writeToFile:filePath atomically:YES];
38 }
39  

七:获取每一帧推按:

 1 [mImageGenerator generateCGImagesAsynchronouslyForTimes:[NSArray arrayWithObject:[NSValue valueWithCMTime:CMTimeMakeWithSeconds(time, NSEC_PER_SEC)]] completionHandler:
 2     ^(CMTime requestedTime, CGImageRef image, CMTime actualTime, AVAssetImageGeneratorResult result, NSError *error)
 3     {
 4            NSLog(@"actual got image at time:%f", CMTimeGetSeconds(actualTime));          if (image)
 5         {
 6             [CATransaction begin];
 7             [CATransaction setDisableActions:YES];
 8             [layer setContents:(id)image];
 9
10             //UIImage *img = [UIImage imageWithCGImage:image];
11             //UIImageWriteToSavedPhotosAlbum(img, self, nil, nil);
12
13             [CATransaction commit];
14         }
15     }];  

八:iOS开发之流媒体常识

实时流媒体传输必须保证数据包的传输速度大于文件的播放速度,否则用户看到的视频会出现暂停。当网络堵塞情况下视频质量会下降,所以要想保证视频的质量渐进式下载会更好一些。

实时流媒体协议:

  • RTSP(Real Time Streaming Protocol)
  • MMS(Microsoft Media Server protocol)
  • HLS(Http Live Streaming)

这里主要介绍HLS,

HLS(HTTP Live Streaming)是苹果公司针对iPhone、iPod、iTouch和iPad等移动设备而开发的基于HTTP协议的流媒体解决方案

九:M3U8文件概念

M3U8文件是指UTF-8编码格式的M3U文件。M3U文件是记录了一个索引纯文本文件,打开它时播放软件并不是播放它,而是根据它的索引找到对应的音视频文件的网络地址进行在线播放。

十:swift中autoclosure

@autoclosure 把一句表达式自动封装成一个闭包(closure)

时间: 2024-08-05 03:52:44

iOS开发——淫技篇&iOS开发中各种淫技总结(三)的相关文章

iOS开发——淫技篇&amp;iOS开发中各种淫技总结(五)

淫技篇&iOS开发中各种淫技总结(五) ARC的使用: ARC并不能避免所有的内存泄露.使用ARC之后,工程中可能还会有内存泄露,不过引起这些内存泄露的主要原因是:block,retain循环,对CoreFoundation对象(通常是C结构)管理不善,以及真的是代码没写好. reuseIdentifier 在iOS程序开发中一个普遍性的错误就是没有正确的为UITableViewCells.UICollectionViewCells和UITableViewHeaderFooterViews设置r

IOS开发数据存储篇—IOS中的几种数据存储方式

IOS开发数据存储篇—IOS中的几种数据存储方式 发表于2016/4/5 21:02:09  421人阅读 分类: 数据存储 在项目开发当中,我们经常会对一些数据进行本地缓存处理.离线缓存的数据一般都保存在APP所在的沙盒之中.一般有以下几种: 1.PList(XML属性列表) 在使用plist进行数据存储和读取,只适用于系统自带的一些常用类型才能用,且必须先获取路径相对麻烦 //写入文件 NSString *doc = [NSSearchPathForDirectoriesInDomains(

iOS开发——淫技篇&amp;iOS开发中各种淫技总结(六)

iOS开发中各种淫技总结(六) swift中指针的使用 在 Swift 中,指针都使用一个特殊的类型来表示,那就是 UnsafePointer<T>.遵循了 Cocoa 的一贯不可变原则,UnsafePointer<T> 也是不可变的.当然对应地,它还有一个可变变体,UnsafeMutablePointer<T>.绝大部分时间里,C 中的指针都会被以这两种类型引入到 Swift 中:C 中 const 修饰的指针对应 UnsafePointer (最常见的应该就是 C

iOS开发——淫技篇&amp;iOS开发中各种淫技总结(四)

iOS开发中各种淫技总结(四) 一:@autoclosure将一段代码块活着一句表达式自动的封装成一个闭包 func logIfTrue(predicate: () -> Bool) { if predicate() { print("True") } } 调用 logIfTrue({return 2 > 1}) 简写:logIfTrue{2 > 1} 在predicate加上@autoclosure调用的时候就可以省略{}直接使用logIfTrue(2>1)

iOS开发——淫技篇&amp;iOS开发中各种淫技总结(二)

iOS开发中各种淫技总结(二) 先来张笔者电脑上面安装的Mac app 一:for .. in 的内部实现(swift): 1 var g = array.generate() 2 while let obj = g.next() { 3 4 5 print(obj) } 6 二:map/Fileter/Reduce map map方法,其获取一个闭包表达式作为其唯一参数. 数组中的每一个元素调用一次该闭包函数,并返回该元素所映射的值(也可以是不同类型的值). 具体的映射方式和返回值类型由闭包来

C# Xamarin移动开发基础进修篇

一.课程介绍 英文原文:C# is the best language for mobile app development. Anything you can do in Objective-C, Swift or Java, you can do in C#. 中文译意:C#是移动应用程序开发的最佳语言. 在Objective-C,Swift或Java中你可以做的任何事情,你都可以在C#中完成. 1).本次分享课程适合人群如下: 1. 热爱Xamarin跨平台移动开发. 2.进一步了解和学习

C# Xamarin移动开发项目实战篇

一.课程介绍 在前面阿笨的<C# Xamarin移动开发基础进修篇>课程中,大家已经熟悉和了解了Xamarin移动App开发的基础知识和原理.本次分享课<C# Xamarin移动开发项目实战篇>,阿笨将直接带领大家进入Xamarin for android的实战项目环节,真真体验一下xamarin开发的魅力吧. 由于阿笨学习Xamarin也是"半路出家","赶鸭子上架"的状态,视频教学中关于Xamarin for Android的知识点难免有

XE6移动开发环境搭建之IOS篇(7):在Mac OSX 10.8中安装Xcode4.6.3(有图有真相)

XE6移动开发环境搭建之IOS篇(7):在Mac OSX 10.8中安装Xcode4.6.3(有图有真相) 2014-08-23 21:37 网上能找到的关于Delphi XE系列的移动开发环境的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 在安装Xcode前,我们先了解下Mac下如何卸载U盘!在VM9下,同一时间内,一个物理设备只能由一个系统去独占,无论是物理机还是虚拟机.我们可以了解一下虚拟机加载U盘的规则:    1.在虚拟机中加载U盘时,会自动将U盘从Wind

XE6移动开发环境搭建之IOS篇(7):在Mac OSX 10.8中安装XE6的PAServer(有图有真相)

XE6移动开发环境搭建之IOS篇(7):在Mac OSX 10.8中安装XE6的PAServer(有图有真相) 2014-08-22 21:06 网上能找到的关于Delphi XE系列的移动开发环境的相关文章甚少,本文尽量以详细的内容.傻瓜式的表达来告诉你想要的答案. 在安装PAServer前,我们先配置一下MAC的IP,给定一个固定的内网IP,以便我们的XE6能更好地连接它!------------------------------------------------------------