工作笔记_0726

经历过的才是最真实的

最近一段时间简单的笔记

1、 录屏权限选择不允许时,处理

viewServiceDidTerminateWithError:: Error Domain=_UIViewServiceInterfaceErrorDomain Code=3 "(null)" UserInfo={Message=Service Connection Interrupted}  

备注:意外问题macdns设置问题,导致各种闪退,以及提交代码提示:could not resolve host 

 

1、在视图旋转时,会产生锯齿

解决:XCode的info.plist里面有以下两项可以开启抗锯齿:

Renders with edge antialisasing = YES (UIViewEdgeAntialiasing)

Renders with group opacity = YES (UIViewGroupOpacity)

但是我发现,当我在视图里放图片,然后视图加阴影后,移动产生了锯齿。

视图内抗锯齿处理:

在UIView的drawRect方法里为当前视图打开抗锯齿:

- (void)drawRect:(CGRect)rect

{

CGContextRef context = UIGraphicsGetCurrentContext();

CGContextSetAllowsAntialiasing(context, true);

CGContextSetShouldAntialias(context, true);

}   

发现问题:

1、在UIImageView 除外的视图中同时添加缩放手势、拖动手势时,会出现:在放大视图后,对视图进行拖动,会很缓慢

小记

1NSFileManager进行操作时,只能对当前app中的资源进行操作,录屏产生的视频存在设备磁盘中,不属于当前app,所以不可以操作

// 获取录制完成的视频路径(遍历所有属性)

unsigned int count;

objc_property_t *properties = class_copyPropertyList([RPPreviewViewController class], &count);

for (int i = 0; i<count; i++) {

objc_property_t property = properties[i];

const char *cName = property_getName(property);

NSString *name = [NSString stringWithCString:cName encoding:NSUTF8StringEncoding];

if ([name isEqualToString:@"movieURL"]){

NSURL *movieURL = [_previewViewController valueForKey:@"movieURL"];

DEBUG_NSLog(@"movieURL:%@,path-%@",movieURL,movieURL.path);

NSString *newFilePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject] stringByAppendingPathComponent:@"record_1.mp4"];

long long filesize = [[[NSFileManager defaultManager] attributesOfItemAtPath:movieURL.path error:nil] fileSize];

NSString *fileSizeStr = [NSByteCountFormatter stringFromByteCount:filesize countStyle:NSByteCountFormatterCountStyleFile];

DEBUG_NSLog(@"录制视频文件大小-%@",fileSizeStr);

}

free(properties);

2、NSURL转路径字符串,[url path]; 

2017-5-12

1、计算机网络基础知识点

Mbps=mega bits per second(兆位/秒)是速率单位, 

MB=mega bytes(兆比、兆字节)是量单位,1MB/S(兆字节/秒)=8MBPS(兆位/秒)。

我们所说的硬盘容量是40GB、80GB、100GB,这里的B指是的Byte也就是“字节”。

所谓 10M 带宽,其实是指 10Mbps (兆比特)

计算带宽理论最快下载速度:10÷8=1.25MB/s

a、家庭带宽大多数不是真正的独显,受上网时段影响,可能会出现高峰期时候与预期理论值相差非常大,空闲时间可能会超过理论值。

b、IDC带宽属于商用带宽价格相比就比家庭带宽贵的多,当然质量上也很稳定与充足,不会有太大的上下浮动,带宽上下行对等,IDC机房庞大的数据中心拥有足够的带宽资源

知识点:

由此方法来判断当前线程是否为主线程 

/* returns non-zero if the current thread is the main thread */

__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0)

int pthread_main_np(void);

JSON

@“ \

{

\”name\”:\”Harry Potter\”,

\”pages\”:512.

\”publishDate\”:\”2010-02\” \

}

” 

1、NSString* filePath   和NSString  *filePath 有没有区别 

A、栈区(stack):由系统自动分配,一般存放函数参数值、局部变量的值 

block有三种类型:

a、__NSConcreteStackBlock(栈中)

b、__NSConcreteGlobalBlock (程序的数据区域中):

一般出现的情况:i.设置全局变量的地方;ii.Block愈发的表达式中不使用任何外部变量时

c、__NSConcreteMallocBlock (堆中)

对不同区域的block进行copy时,copy效果分别是:从栈复制到堆并被block持有、什么也不做、引用计数增加(被block持有)

__main_block_desc_0多了两个成员函数:

__main_block_copy_0 __main_block_dispose_0

2017-06-07

1、利用clangoc代码转换成

cd到文件所在文件夹路径,执行命令 clang -rewrite-objc yourfile.m

2、将oc文件转换成可执行文件 

  • -fobjc-arc表示编译器需要支持ARC特性
  • -framework Foundation表示引用Foundation框架
  • HelloWord.m为需要进行编译的源代码文件
  • -o HelloWord表示输出的可执行文件的文件名

cocos2d博客

http://www.cnblogs.com/zilongshanren/default.html?page=8

播放视频时录音会断

[DFCNotificationCenter addObserver:self selector:@selector(audioSessionWasInterrupted:) name:AVAudioSessionInterruptionNotification object:nil];

- (void)audioSessionWasInterrupted:(NSNotification *)notification

{

//    NSLog(@"the notification is %@",notification);

DEBUG_NSLog(@"---%d",self.aqc.run);

if (AVAudioSessionInterruptionTypeBegan == [notification.userInfo[AVAudioSessionInterruptionTypeKey] intValue])

{

NSLog(@"begin");

}

else if (AVAudioSessionInterruptionTypeEnded == [notification.userInfo[AVAudioSessionInterruptionTypeKey] intValue])

{

NSLog(@"begin - end--%@",self);

[[AVAudioSession sharedInstance] setActive:YES error:nil];

[self start];

}

}

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord mode:AVAudioSessionModeVoiceChat options:AVAudioSessionCategoryOptionMixWithOthers error:nil];

备注:上面一句代码会造成无法使用airplay

AVAudioSessionCategoryOptionMixWithOthers/* MixWithOthers is only valid with AVAudioSessionCategoryPlayAndRecord, AVAudioSessionCategoryPlayback, and  AVAudioSessionCategoryMultiRoute */

渲染(rendering):计算机根据模型闯将图像的过程

模型(model):根据几何图元创建,也称作物体(object)

几何图元包括点、直线和多边形等,是通过顶点(vertex)指定

window.windowLevel = UIWindowLevelAlert;

使用此代码之后,状态栏有可能会消失

2017-06-30

1、地理位置解码(GPS、wifi路由器、蜂窝煤数据)

通普路, 中国浙江省杭州市******通普路(wifi路由器)(大概定位到的是wifi分管路由器的位置,不太精确)
***中心Ⅰ座, 中国浙江省杭州市********5号附近(蜂窝数据)(相对于wifi定位 更精确)

2、异常处理(只能捕获部分异常)

void UncaughtExceptionHandler(NSException *exception){

NSArray *callStack = [exception callStackSymbols];

NSString *reason = exception.reason;

NSString *name = exception.name;

NSString *content = [NSString stringWithFormat:@"========异常错误报告========\nname:%@\nreason:\n%@\ncallStackSymbols:\n%@",name,reason,[callStack componentsJoinedByString:@"\n"]];

/**

*  把异常崩溃信息发送至开发者邮件

*/

NSMutableString *mailUrl = [NSMutableString string];

[mailUrl appendString:@"mailto:[email protected]"];

[mailUrl appendString:@"?subject=程序异常崩溃,请配合发送异常报告,谢谢合作!"];

[mailUrl appendFormat:@"&body=%@", content];

// 打开地址

NSString *mailPath = [mailUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:mailPath]];

}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

// Override point for customization after application launch.

NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler);

return YES;

}

2017-07-03

1、结构体与类的区别

(运行时产生的变量由堆分配内存,编译时产生的变量由栈分配内存)

a】结构体是实值类型(value types),使用栈存储(stack alloction),所有结构成员默认都是public,不能被声明为protected

类是引用类型(reference types),使用堆存储(heap alloction)

b】结构体成员不能指定初始值、使用new关键字对数组进行初始化,不能声明默认的构造函数,也不能声明析构函数

类变量可以指定赋值,可以声明析构函数

备注:析构函数与构造函数相反,当对象结束生命周期时,系统自动执行析构函数

在C语言中,通过结构体名称就可以完成结构体变量的定义,并分配内存空间;

而类仅仅用来定义变量,不会分配内存空间,必须使用new等关键字来完成内存空间的分配

2、在项目原有tableview上后续添加cell,点击没有反应(不走didSelectRowAtIndexPath方法),原有cell的正常

原因:显示tableview的父级视图大小固定为原有数据的宽高,重新调整即可 

1、本地找不到远程分支

可以把远程某各分支拉去到本地的下,如果没有,则会在本地新建

获取远程分支到本地新分支,并跳到分支,这里加了,让创建的本地分支跟中远程的分支。

2

在当前分支的基础上创建新的分支

一、replay kit填坑笔记

Section A 问题记录

1、调用RPScreenRecorder时,会出现访问权限弹框以及预览视频界面的按钮,显示为英文

探究:在录屏模块开发过程中发现,在iOS10.1以下的系统中,有国际化(大陆显示中文),在iOS10.2以及更高版本中则没有国际化处理,应该是目前新的系统中没有对录屏这块进行国际化处理

2、在使用RPScreenRecorder调用stopRecordingWithHandler方法时,会偶尔报错:RPRecordingErrorDomain - code(5804),错误信息显示,failed during recording

解决:在开发文档上,没有查询到此状态码,并且在stackoverflow中有开发者遇到此问题,至今没有解决

偶然的一个方法,就是重启了ipad,即可正常使用

3、预览界面消失时,先调用-previewController:didFinishWithActivityTypes:方法,再调用-previewControllerDidFinish:方法

1、点击save  --- com.apple.UIKit.activity.SaveToCameraRoll

2、点击cancel --- activityTypes为空

Section B 框架缺陷:

a、RPScreenRecorder初始化方法+ (RPScreenRecorder *)sharedRecorder中声明Singleton class used to control app recording,但是在同一模块多次调用[RPScreenRecorder sharedRecorder],然后多处打印该对象的recording属性时,会发现很乱,比如当前已经开始录屏,此时按照推理recording为yes,在想要结束录屏时打印该属性,则有可能为no,所以在使用时,最好将RPScreenRecorder变量还是声明为属性,在这种做法下,基本可以避免recording无规律的现象。因此对此处单例模式产生怀疑,或者说是自己对单例模式的理解有问题?

b、在弹出视频预览框时,偶尔会出现白屏,这个具体原因有可能跟设备有关,或者说其他原因。(我在开发过程中遇到过几次,而测试人员在测试过程中则没有出现这种情况)

viewServiceDidTerminateWithError:: Error Domain=_UIViewServiceInterfaceErrorDomain Code=3 "(null)" UserInfo={Message=Service Connection Interrupted}

c、replaykit中的直播功能与录屏功能不可同时使用(两者都会影响recording属性值);录屏功能和投屏功能不可同时使用

时间: 2024-10-14 12:37:22

工作笔记_0726的相关文章

工作笔记3.手把手教你搭建SSH(struts2+hibernate+spring)环境

上文中我们介绍<工作笔记2.软件开发常用工具> 从今天开始本文将教大家如何进行开发?本文以搭建SSH(struts2+hibernate+spring)框架为例,共分为3步: 1)3个独立配置:struts2. Hibernate. Spring 2)2个整合:整合Sring和struts2. 整合Spring和Hibernate 3)资源分类 开发包.软件.框架源码,已经共享到百度网盘:http://pan.baidu.com/s/1o6FkbA6 一.3个独立配置 1.Struts2: 1

七月工作笔记 7.7 - 7.11

1. vs第二次单步调试崩溃..一开始不知道为什么,重装无数次..后来发现是VAssistX 插件的问题...将下载下来的插件包中的VA_X.dll  拷贝到VAssistX 的安装路径下即可. 2. 发现了一个很棒的vs配色方案的网站   http://studiostyl.es/ 3. sendmessage和postmessage的区别PostMessage只负责将消息放到消息队列中,不确定何时及是否处理SendMessage要等到受到消息处理的返回码(DWord类型)后才继续PostMe

工作笔记5.JAVA图片验证码

本文主要内容为:利用JAVA图片制作验证码. 设计思路: 1.拷贝AuthImageServlet.class图片验证码 2.配置web.xml 3.JSP中,调用封装好的AuthImageServlet,实现载入验证码的功能. 4.取出存放在Session中的验证码.在Action中推断验证码的正确性 相比較上一篇博客<工作笔记5.JAVA文本框验证码>而言,图片验证码添加了安全性. 在Action中,通过取出Session中的验证码与输入的验证码是否匹配进行推断. 步骤: 1.拷贝Auth

工作笔记(一)

1.The GetCurrentDirectory function retrieves the current directory for the current process DWORD GetCurrentDirectory(  DWORD nBufferLength,  // size of directory buffer  LPTSTR lpBuffer       // directory buffer); 用法: TCHAR tszModule[MAX_PATH ] = { 0

iOS核心动画工作笔记

1.图层和UIVIew的区别:图层不能和用户进行交互,图层性能高 2.imageVIew的图片显示是在图层上面的子层.用maskBounds剪切时剪的是图层,用户看不到是因为子层挡住了 3.CAlayer的代理方法没有协议,任何对象都能成为他的代理,即NSObject的方法 4.UIVIew内部的根图层的代理就是View本身,所以在UIVIew中的drawRect方法绘图.一个view不能设置代理.因为已经是它图层的代理 5.Core Animation直接作用于CALayer,缺点是动画后图片

【工作笔记】npapi插件编写

虽然chrome已经不再支持npapi插件,不过公司的浏览器外壳是基于低版本的chromium开发,所以由于工作需要,还是学习了一下npapi插件的开发. 此次开发主要参考了以下博客和文档: http://blog.csdn.net/z6482/article/details/7660748 http://mozilla.com.cn/post/21666/ [工作笔记]npapi插件编写,布布扣,bubuko.com

SEDA工作笔记(一)

摘要 在普遍认知中,软件开发实践是一项充满不确定性的工作,这是由于编码工作占据了其绝大部分的工作,而编码本身就是具有极大不确定性的.同样,计算机科学被视作一门门槛低,基于经验,而无理论意义的纯工程类学科.这种观念不仅为广泛非本专业内人士所共持,即便本门师生,从业人员也偶有赞同.本文试图通过一次对SEDA服务器架构的编程实践的学习与研究,找寻一种科学的解决问题思路.在本次实践中,笔者将强调数学在软件开发中的重要地位,同时指出在核心算法的制定工作阶段,数学是其最重要的工作,而非经验性的设计模式套用.

Android工作笔记之——7月第2周

一.Android TextView内容过长加省略号 android:ellipsize="end"   省略号在结尾 android:singleline="true" android:ellipsize="marquee"  跑马灯 :: 跑马灯这个属性似乎直接这样还不行,TextView只有在获取焦点后才会滚动显示隐藏文字,因此需要在包中新建一个类,继承TextView.重写isFocused方法,这个方法默认行为是,如果TextView获

【工作笔记】VLC播放器在chrome中的调用

VLC 是一款自由.开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件,以及 DVD.音频 CD.VCD 及各类流媒体协议. ---------引用自官网http://www.videolan.org/ 在自己的html代码中调用vlc插件其实非常简单,以下代码来自官方demohttps://wiki.videolan.org/Documentation:WebPlugin/ 详细demo可以参考安装目录\sdk\activex\test.html <html> <title>