工作笔记_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:@"========异常错误报告======== name:%@ reason: %@ callStackSymbols: %@",name,reason,[callStack componentsJoinedByString:@" "]];

    

    /**

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

     */

    NSMutableString *mailUrl = [NSMutableString string];

    [mailUrl appendString:@"mailto:1254339809@qq.com"];

    [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、本地找不到远程分支

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

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

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

一、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属性值);录屏功能和投屏功能不可同时使用

原文地址:https://www.cnblogs.com/Ice-snowPride/p/7241262.html