經歷過的纔是最真實的 html
最近一段時間簡單的筆記數組
一、 錄屏權限選擇不容許時,處理網絡
viewServiceDidTerminateWithError:: Error Domain=_UIViewServiceInterfaceErrorDomain Code=3 "(null)" UserInfo={Message=Service Connection Interrupted} app
備註:意外問題mac的dns設置問題,致使各類閃退,以及提交代碼提示:could not resolve host 框架
一、在視圖旋轉時,會產生鋸齒ide
解決:XCode的info.plist裏面有如下兩項能夠開啓抗鋸齒:函數
Renders with edge antialisasing = YES (UIViewEdgeAntialiasing)測試
Renders with group opacity = YES (UIViewGroupOpacity)url
可是我發現,當我在視圖裏放圖片,而後視圖加陰影后,移動產生了鋸齒。 spa
視圖內抗鋸齒處理:
在UIView的drawRect方法裏爲當前視圖打開抗鋸齒:
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetAllowsAntialiasing(context, true);
CGContextSetShouldAntialias(context, true);
}
發現問題:
一、在UIImageView 除外的視圖中同時添加縮放手勢、拖動手勢時,會出現:在放大視圖後,對視圖進行拖動,會很緩慢
小記
1、NSFileManager進行操做時,只能對當前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
一、計算機網絡基礎知識點
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、利用clang將oc代碼轉換成c
cd到文件所在文件夾路徑,執行命令 clang -rewrite-objc yourfile.m
2、將oc文件轉換成可執行文件
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
一、地理位置解碼(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: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
一、結構體與類的區別
(運行時產生的變量由堆分配內存,編譯時產生的變量由棧分配內存)
a】結構體是實值類型(value types),使用棧存儲(stack alloction),全部結構成員默認都是public,不能被聲明爲protected
類是引用類型(reference types),使用堆存儲(heap alloction)
b】結構體成員不能指定初始值、使用new關鍵字對數組進行初始化,不能聲明默認的構造函數,也不能聲明析構函數
類變量能夠指定賦值,能夠聲明析構函數
備註:析構函數與構造函數相反,當對象結束生命週期時,系統自動執行析構函數
在C語言中,經過結構體名稱就能夠完成結構體變量的定義,並分配內存空間;
而類僅僅用來定義變量,不會分配內存空間,必須使用new等關鍵字來完成內存空間的分配
2、在項目原有tableview上後續添加cell,點擊沒有反應(不走didSelectRowAtIndexPath方法),原有cell的正常
緣由:顯示tableview的父級視圖大小固定爲原有數據的寬高,從新調整便可
一、本地找不到遠程分支
能夠把遠程某各分支拉去到本地的下,若是沒有,則會在本地新建
獲取遠程分支到本地新分支,並跳到分支,這裏加了,讓建立的本地分支跟中遠程的分支。
2
在當前分支的基礎上建立新的分支
1、replay kit填坑筆記
Section A 問題記錄
一、調用RPScreenRecorder時,會出現訪問權限彈框以及預覽視頻界面的按鈕,顯示爲英文
探究:在錄屏模塊開發過程當中發現,在iOS10.1如下的系統中,有國際化(大陸顯示中文),在iOS10.2以及更高版本中則沒有國際化處理,應該是目前新的系統中沒有對錄屏這塊進行國際化處理
二、在使用RPScreenRecorder調用stopRecordingWithHandler方法時,會偶爾報錯:RPRecordingErrorDomain - code(5804),錯誤信息顯示,failed during recording
解決:在開發文檔上,沒有查詢到此狀態碼,而且在stackoverflow中有開發者遇到此問題,至今沒有解決
偶然的一個方法,就是重啓了ipad,便可正常使用
三、預覽界面消失時,先調用-previewController:didFinishWithActivityTypes:方法,再調用-previewControllerDidFinish:方法
一、點擊save --- com.apple.UIKit.activity.SaveToCameraRoll
二、點擊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屬性值);錄屏功能和投屏功能不可同時使用