iOS_bookmarkiOS开发笔记

开发中遇到的问题和解决方法(持续更新)

2016-05-25  本文已影响2206人  榕樹頭

1、pod安装淘宝镜像失败:Error fetching http://ruby.taobao.org/: bad response Not Found 404 (http://r

解决:http 改成 https

2、pod install 失败:[!] Unable to satisfy the following requirements:- `Masonry` required by `Podfile`Specs satisfying the `Masonry` dependency were found, but they required a higher minimum deployment target.

解决:podfile platform :ios,’8.0’ 版本号不能少

3、问题:cocoapods 导入的第三方库,import“”时没有提示

解决:target - build setting - search paths - user header search  添加:$(PODS_ROOT)  选择 recursive 

4、配置pch文件,新建了.pch文件之后,在build setting中:

(1) 将Precompile Prefix Header设置成Yes;

(2). 在Prefix Header中写入它的绝对路径。Re:绝对路径哟。我开始放的是相对路径$(SRCROOT)/pch文件名.pch。结果发现项目还是报错。

获得绝对路径的技巧: 教一个方法:打开终端。将项目中的.pch文件拖入到终端中即可。然后复制路径--填写到项目。

5、NSDocumentDirectory 是指程序中对应的Documents路径,而NSDocumentionDirectory对应于程序中的Library/Documentation路径,这个路径是没有读写权限的,所以看不到文件生成。

6、stringByAppendingPathComponent 和 stringByAppendingString 的区别:

前者是拼接成一个路径,后者是添加为后缀

例子:NSString *sqlPath = [path stringByAppendingString:@"test.sqlite"];

/Users/rong/Library/Developer/CoreSimulator/Devices/80F6DE9C-E48C-487C-98E3-1753B333FFB7/data/Containers/Data/Application/B4EF58D8-699A-4018-8CD8-8D1A071E85E2/Documentstest.sqlite

NSString *sqlPath = [path stringByAppendingPathComponent:@"test.sqlite"];

/Users/rong/Library/Developer/CoreSimulator/Devices/80F6DE9C-E48C-487C-98E3-1753B333FFB7/data/Containers/Data/Application/8989D025-94F3-40B6-B6D6-D2ED5300FBB9/Documents/test.sqlite

7、const 和 #define的区别(参考一下链接):http://mp.weixin.qq.com/s__biz=MzAxMzQ3NzQ3Nw==&mid=406399975&idx=2&sn=1119af5fa2583798a435b839da372e03&scene=23&srcid=0324JrMaMfVzsgwoSbvlj8xm#rd

8、const 和 static的区别:对于C/C++语言来讲,const就是只读的意思,只在声明中使用;static一般有2个作用,规定作用域和存储方式.对于局部变量,static规定其为静态存储方式,每次调用的初始值为上一次调用的值,调用结束后存储空间不释放;对于全局变量,如果以文件划分作用域的话,此变量只在当前文件可见;对于static函数也是在当前模块内函数可见.static const 应该就是上面两者的合集.

9、socket TCP 三次握手 发起链接请求,四次握手结束链接请求

10、关于HTTPS:App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file在Info.plist文件中添加NSAppTransportSecurityNSAllowsArbitraryLoads

11、要求:将桌面下名为Sample_iOS_480x224.mp4的视屏文件分割为m3u8格式的分段媒体文件 操作:       

(1)下载mediafilesegmenter的工具包 ,我所用的Mac OS 10.6.8中并没有包含 mediafilesegmenter 工具,因此需要去苹果的开发网站下载包含此命令的工具包 ,访问http://connect.apple.com,并搜索mediafilesegmenter,下载streamingtools_beta138.dmg  ,下载完成后双击安装即可       

(2)在终端窗口中输入如下命令,执行即可 

 mediafilesegmenter -B ItanoPart -i SamplePartList.m3u8 -t 10  -f /Users/YourName/Desktop/movie /Users/YourName/Desktop/Sample_iOS_480x224.mp4           

 命令中各参数解释如下:              

 -B: 各分段文件名称     

 -i:  分段列表文件名称             

  -t:  各分段时长         

  -f:  输出文件路径              

 /Users/YourName/Desktop/Sample_iOS_480x224.mp4 源文件路径

这样很简单就可以实现本地媒体文件的分割,更多的参数说明,可以参见工具包的联机说明文档(在终端窗口中输入 man mediafilesegmenter)    

 12、流切片(参考链接):  http://blog.csdn.net/sakulafly/article/details/48367871        

13、Could not find Developer Disk Imagexcode版本不支持手机iOS版本,升级Xcode来解决

14、Linux显示行号:使用的命令为:在末行方式下输入命令::set number

不能保存只读文件的解决方法:w! sudo tee &

15、objective-c 中随机数的产生方法 3种:arc4random() 、random()、CCRANDOM_0_1() 

1、随机数的使用    

 1)、arc4random() 比较精确不需要生成随即种子      

 使用方法 :  通过arc4random() 获取0到x-1之间的整数的代码如下:

 int value = arc4random() % x;                

  获取1到x之间的整数的代码如下:                

 int value = (arc4random() % x) + 1;       

 2)、CCRANDOM_0_1() cocos2d中使用 ,范围是[0,1]      

使用方法: float random = CCRANDOM_0_1() * 5; //[0,5]  CCRANDOM_0_1() 取值范围是[0,1]        

3)、random() 需要初始化时设置种子,使用方法:               

 srandom((unsigned int)time(time_t *)NULL); //初始化时,设置下种子就好了。

16、layoutSubviews在以下情况下会被调用:

(1)init初始化不会触发layoutSubviews

(2)addSubview会触发layoutSubviews

(3)设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化(4)滚动一个UIScrollView会触发layoutSubviews

(5)旋转Screen会触发父UIView上的layoutSubviews事件

(6)改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件

17、NSRunLoop是IOS消息机制的处理(参考链接:http://my.oschina.net/u/816791/blog/3875681).

 在timer与table同时执行情况,当拖动table时,runloop进入UITrackingRunLoopModes模式下,不会处理定时事件,此时timer不能处理,所以此时将timer加入到NSRunLoopCommonModes模式(addTimer forMode) Run Loop什么情况下使用:

a. 使用ports 或 input sources 和其他线程通信  // 不了解 

b. 在线程中使用timers   // 如果不启动run loop,timer的事件是不会响应的  

c. 在Cocoa 应用中使用performSelector...方法  // 应该是performSelector...这种方法会启动一个线程并启动run loop吧 

d. 让线程执行一个周期性的任务  // 如果不启动run loop, 线程跑完就可能被系统释放了  注:timer的创建和释放必须在同一线程中。 [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];  此方法会retain timer对象的引用计数 

18、使用断言NSAssert()调试程序错误#define NSAssert(condition, desc)condition是条件表达式,值为YES或NO;desc为异常描述,通常为NSString。当conditon为YES时程序继续运行,为NO时,则抛出带有desc描述的异常信息。NSAssert()可以出现在程序的任何一个位置。

19、谷歌浏览器上谷歌的方法: chrome://flags/  QUIC

20、pod update --verbose --no-repo-update

21、Duplicate Symbol链接错的原因总结和解决方法http://bbs.lbsyun.baidu.com/forum.php?mod=viewthread&tid=15809

22、显示隐藏文件:defaults write com.apple.finder AppleShowAllFiles YES

不显示隐藏文件:defaults write com.apple.finder AppleShowAllFiles NO

命令运行之后需要重新加载Finder:快捷键option+command+esc,选中Finder,重新启动即可

23、touch README.md //新建一个记录提交操作的文档

git init //初始化本地仓库

git add README.md //添加

git commit -m "first commit"//提交到要地仓库,并写一些注释git remote add origin 

git@github.com:youname/Test.git //连接远程仓库并建了一个名叫:origin的别名git 

push -u origin master //将本地仓库的东西提交到地址是origin的地址,master分支下!

(显示GIF图)[image](http://github.com/rongshutou/iOS-Animation/raw/master/animation.gif)  

24、  ld: -pie can only be used when targeting iOS 4.2 or later    clang: error: linker command failed with exit code 1 (use -v to see invocation)

25、The certificate used to sign "Photo_demo" has either expired or has been revoked. An updated certificate is required to sign and install the application

上一篇 下一篇

猜你喜欢

热点阅读