![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS开发
行云流水1234567
这个作者很懒,什么都没留下…
展开
-
引入第三方库编译提示arc问题
通常我们使用ARC管理项目文件,但当我们引入第三方库的时候,第三方库文件中都是用MRC方式进行开发,会用到release,retain等函数,这时候就会导致编译不通过的问题。这时我们需要针对这些文件单独设置内存管理方式的属性。step1:找到工程文件的build phrase 选择compile sources step2:对于报错的文件,双击,在弹出框中输入: -fno-objc-a原创 2017-03-14 10:25:52 · 256 阅读 · 0 评论 -
使用NSURLRequest请求数据时报错的解决
我在使用NSURLRequest发起http请求网络资源时,没有成功,终端报了这个问题:The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.这是因为iOS9之后,Apple引入了新特性ATS(App Transpa原创 2017-03-29 16:02:16 · 494 阅读 · 0 评论 -
gcd学习
cfrunloopdispatch_once 执行并且只执行一次任务,这个方法方法有两个参数,第一个通常是dispatch_once_t 类型的,用来保证只执行一次。第二个参数是需要只执行一次的任务。这个方法用在很多单例中,比如缓存、播放器内核的处理。下面的demo用来创建一个播放器队列的单例:static dispatch_queue_t mediaplayer_processing_q原创 2017-03-28 14:09:21 · 215 阅读 · 0 评论 -
pop到指定页面,崩溃
当我们想pop到某个页面的时候,不正确的写法,会产生crash:Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Tried to pop to a view controller that doesn't exist.'navigationController.vi原创 2017-03-20 16:04:27 · 1507 阅读 · 1 评论 -
关于属性synthesize警告⚠️
问题:我在创建一个UICollectionViewController的时候,又定义了一个叫collectionView的UICollectionView类型的属性,这时候,系统会给出这样的⚠️:Auto property synthesis will not synthesize property 'collectionView'; it will be implemented by its原创 2017-03-18 14:03:51 · 851 阅读 · 0 评论 -
remove them before you switch branches报错
经常会需要merge其他人的代码,如果不需要的文件,如果特别多的情况下,可以直接干掉,使用:git clean -d -fx “ ”即可原创 2017-02-22 21:00:29 · 372 阅读 · 0 评论 -
明星页的设计和实现
明星主页面的设计和实现原创 2017-01-22 21:24:30 · 1557 阅读 · 0 评论 -
The launch image set named LaunchImage did not have any applicable content
报错的原因是icon图片使用的格式或者尺寸不正确,导致xcode编译的时候找不到该icon文件。icon的@2x尺寸必须是120*120,@3x的则是180*180。并且icon图片必须是png格式的。可以使用PS修改。alt + cmd + i进入图片尺寸修改界面,取消"约束比例“,修改即可。最后shift +cmd + s,选择保存为png格式即可。原创 2017-02-19 12:39:45 · 2729 阅读 · 0 评论 -
编译报错:Apple Mach-O Linker Error Group
通过引入第三方库文件,编译的时候报了这个链接错误:Apple Mach-O Linker Error Group根据报错日志,定位到是第三方库文件RegexKitLite的问题。引入第三方库,除了把文件引进来,还需要添加他们依赖的静调库。添加方式:Step1: 工程项目下的build phrase,选择Link Binary with LibrariesSetp2:add静态库文件原创 2017-03-14 10:59:58 · 1940 阅读 · 0 评论 -
处理CF和OC对象的转化的三个修饰符
CF( CoreFoundation)是一套c语言的api,用于面向Objective-C基础数据和服务的管理和维护。在开启ARC环境下,处理CF对象和OC对象的转化的三个修饰符包括:__bridge, __bridge_transfer, __bridge_retain1、为什么需要__bridge?成功编译的需要。id obj = [[NSObject alloc] ini原创 2017-03-30 14:08:38 · 711 阅读 · 0 评论 -
Xcode常用目录
iOS开发的时候,难免需要删除证书,清除缓存等,下面是具体的路径,mark下:1.Xcode证书路径:~/Library/MobileDevice/Provisioning Profiles2.Xcode编译项目缓存垃圾的目录:~/Library/Developer/Xcode/DerivedData3.Xcode插件路径:~/Library/Application\ Su原创 2017-04-18 19:09:34 · 510 阅读 · 0 评论 -
target编译报错
编译错误:Target specifies product type 'com.apple.product-type.tool', but there's no such product type for the 'iphonesimulator' platform原因是没有指定合适的target类型。我发现我编译的target用的是macos的,所以自然不存在iphone的模拟器了。解决原创 2017-03-27 14:14:57 · 1831 阅读 · 0 评论 -
tableView不能下拉到底部的问题
当tableview需要显示的cell内容大于一屏的时候,最底部的cell不能正常滑到底部才能显现,解决的办法是,修改添加tableView的方式。[self.view addSubview:self.tableView];改成:self.view = self.tableView;就可以了原创 2017-03-26 19:23:50 · 1184 阅读 · 0 评论 -
启动npm报错
使用 npm start启动npm,提示错误:> leclient@1.0.0 start /Users/nigellee/Documents/LeMobileClient-ReactNative> node node_modules/react-native/local-cli/cli.js startmodule.js:472 throw err;原创 2017-04-11 17:13:11 · 7213 阅读 · 0 评论 -
使用tableview的时候出现crash:Assertion failure in -[UITableView _configureCellForDisplay:forIndexPath:]
在使用tableview控件进行project项目开发的时候,能通过编译,也没有⚠️,但是进入使用tableview的时候,有一个必现崩溃:Assertion failure in -[UITableView _configureCellForDisplay:forIndexPath:]查看了代码,发现是table view的cell可重用队列返回空引发的,- (UITableView原创 2017-03-25 22:05:07 · 2188 阅读 · 0 评论 -
处理url的一个需求
进行前后端交互的时候,url是经常需要处理的。假如现在有一个这样的需求场景:通过二维码扫码以后,解析生成了一个叫result的url,它大概是这个样子:http://sso.abcabc.com/user/mLoginHome/qrcode/77d57acxyCFYeYwE6FFdWRINbuarqPaqvO17tjhjtlkCSm3RRuSgPgPFMiFm1ErsAnq3GxiJYYFKl原创 2016-04-15 16:15:45 · 427 阅读 · 0 评论 -
警告⚠️Assigning to 'id<LoginViewDelegate>' from incompatible type 'LoginViewController *__strong'
这个问题在设置代理对象的时候出现的,例如,在init方法里有这样的赋值:self.loginView.delegate = self;代理对象要给loginView进行代理。警告出现的原因是代理对象,没有实现被代理对象,也就是loginView的代理协议。可以在实现文件里面这么改:@interface LoginViewController()当然在头文件里面实现这个协原创 2017-03-15 18:32:36 · 3149 阅读 · 0 评论 -
使用CollectionViewController出现崩溃:Terminating app due to uncaught exception 'NSInvalidArgumentException
在使用Cocoa Touch提供的组件UICollectionViewController创建一个实例的时候,如果不正确使用,会出现崩溃。查看日志:Terminating app due to uncaught exception 'NSInvalidArgumentException这是因为跟UITableViewController不同,UICollectionViewControll原创 2017-03-15 18:15:36 · 4328 阅读 · 0 评论 -
clang的使用
macOS 自带了clang编译器。clang是Apple LLVM编译器的一个前端。http://clang.llvm.org/ 给出了官方的解释:a C language family frontend for LLVM. Its goal is to create a new C, C++, Objective C and Objective C++ front-end for LLVM原创 2016-12-07 15:45:35 · 7399 阅读 · 0 评论 -
关于沙盒
沙盒科普原创 2016-11-22 22:38:16 · 488 阅读 · 0 评论 -
函数指针
需要理解Object-C中的Block,需要先了解一下函数指针。函数指针是C语言定义的一种指针,用于指向一个函数。在C语言中,函数名在compiler看来,就是一个地址值。而函数指针可以接收一个地址。所以可以用函数指针等于一个函数名。具体看下下面的demo:typedef char * (*Fp)(char *p1, char *p2); // define alias of an原创 2016-11-19 17:31:05 · 321 阅读 · 0 评论 -
ios10应用调试
最近因为适应ios10的设备,公司也在10的系统上部署了应用。因为修复线下bug的原因,我接触到了10的系统。but,要调试10上的应用,原先的xcode会爆出这个信息:Could not find Developer disk image这个主要是因为xcode的版本引起的,ios10的调试需要xcode8以上,就像ios9.3需要xcode7.3。所以问题简单了,update xcod原创 2016-08-26 16:16:07 · 369 阅读 · 0 评论 -
获取设备的ios版本号
很多情况下,特别是提测阶段爆出的很多bug,会跟系统的版本有关系。所以,根据不同的ios版本进行UI适配,或者其他的处理,是很常见的需求。现在提供一种获取ios版本的方法:float systemVersion = [[[UIDevice currentDevice] systemVersion] doubleValue];if (systemVersion >= 8 && system原创 2016-09-05 11:36:49 · 208 阅读 · 0 评论 -
ios比较confuse的几个structure
发现了一篇言简意赅的blog,分享给大家:http://blog.sina.com.cn/s/blog_a843a8850101dkhl.html转载 2016-09-02 11:20:14 · 247 阅读 · 0 评论 -
Foundation中的可变字符串对象
区别于NSString,可变字符串NSMutableString对象的所引用的字符串内容可以被修改,这种修改包括:删除、插入、替换等。而NSString是NSMutableString的子类,本身并不能修改指向的字符串,只能改变指向的字符串。Foundation提供了对于可变字符串对象的修改,现在看几个小需求。1.在str字符串的第2个字符串的位置插入字符串replaceNSMut原创 2016-06-22 16:00:13 · 269 阅读 · 0 评论 -
温故而知新,now复习一下Foundation中的字符串对象
Foundation中string Objects原创 2016-06-20 22:23:41 · 203 阅读 · 0 评论 -
Foundation中String对象常用API
Foudation的字符串对象处理常用API原创 2016-06-27 17:46:11 · 359 阅读 · 0 评论 -
pointer浅谈
指针的作用不言而喻,它可以帮助你高效地操作data structure,改变方法中的参数,精确地处理数组等等。原创 2016-04-19 11:23:53 · 325 阅读 · 0 评论 -
mac下vim配置
mac终端下自带了vim。在终端下输入:vim,就可以看到vim的版本,像我等vim是7.3的使用vim的一个很大原因是它做够灵巧快捷,比如一些常用的快捷键组合可以很方便地实现编辑。还有一个原因是它能方便的进行各种定制化配置。配置vim的工作全部都能通过修改vimrc文件实现。vimrc有全局的和用户级别的区别。全局级别的vimrc在:/usr/share/vim/vimrc 。用户级原创 2016-03-28 17:08:27 · 1776 阅读 · 0 评论 -
ios9untrusted developer问题解决
解决步骤原创 2016-09-19 11:38:33 · 5591 阅读 · 0 评论 -
http浅谈
使用 Charles抓包工具进行数据包的追踪,接口URL的抓取在开发中是很常见的需求。要看懂Charles中的内容,需要http协议的规范。现在对几个HTTP数据包进行分析,以此说说HTTP的数据的规范HTTP超文本传输协议是一个应用层协议,主要完成client和server直接的网络通信。下面是一个App发给server的请求:作为客户端向server发起的一个reque原创 2016-09-12 18:33:00 · 293 阅读 · 0 评论 -
实现view添加到window的方式
一个view加到UIWindow的方式主要有2种:方法1、直接拿到当前的window,通过UIWindow *window = [UIApplication shareApplication].windowslastObject],然后在用[ window addSubView:view]即可方法2、设置UIWindow的控制器,将RootVC的view加到window上,可以这么用:原创 2016-09-20 08:46:08 · 10639 阅读 · 0 评论 -
Message from debugger: Terminated due to memory issue
随着程序的闪退,Xcode的debug区的终端出现:Message from debugger: Terminated due to memory issue原创 2016-11-19 14:13:50 · 4860 阅读 · 0 评论 -
Xcode常用快捷键总结持续跟新
在Xcode中使用shortcut,可以有效提高工作效率。废话不多说,总结下常用的。1、编译工程:cmd + B2、运行工程:cmd + R3、停止运行工程:cmd + .4、clean工程:shift + cmd + K5、代码折叠:opt + cmd + left/right6、新建工程:shift + cmd + N7、打开profile:cmd + I8、文原创 2016-11-18 09:39:10 · 240 阅读 · 0 评论 -
xcode真机编译中的常见的三个concept及其关系
主要的概念包括bundle identity、provisioning profile(描述文件)、iOS certificate(证书)描述文件在文件系统里面一般是xxx.mobileprovision,例如 i_WidgetExtension_dev.mobileprovision。描述文件需要在Xcode的项目General中进行配置。证书则是xxx.p12名字的文件,例如 老证书.原创 2016-11-17 11:38:04 · 222 阅读 · 0 评论 -
Charles抓取https数据报文
需要在手机端和电脑端都要进相应的配置,具体流程见:http://www.tuicool.com/articles/JfEZr23原创 2016-11-16 18:06:01 · 316 阅读 · 0 评论 -
编译错误:”Too many arguments to function call, expected 0, have 2 ”的解决
在进行大规模工程开发的时候,或者是对原有工程结构进行调整,会出现很多编译问题。其中:“Too many arguments to function call, expected 0, have 2” 是比较常见的一种。这个编译报错在Xcode8上比较常见。解决办法是对LLVM (low level virtual machine)属性进行设置。LLVM是一个开源的编译器框架,很重要的一原创 2016-10-08 14:43:41 · 19707 阅读 · 0 评论 -
变量所在的内存空间
变量的内存空间主要有以下几个:heap、stack、静态区、文字常量区、代码区heap:不连续的内存区域,有开发者自行进行开辟和释放。如果程序结束时没有进行释放、操作系统会对其进行管理。开发者通过new/malloc等创建存放在heap上的变量,通过delete/free对他们进行删除。stack:和堆不同,它是连续的内存空间。由编译器进行分配和回收等管理。一般存放函数的参数、局部变量等。原创 2016-09-23 16:35:12 · 1481 阅读 · 0 评论 -
与UIWindow相关几个控件
一、键盘显示键盘的显示是系统的行为,当一个UITextfiel或者UITextView实例成为first responder的时候,(通过发消息给becomeFirstResponder实现)系统会调起键盘。键盘实例对象是UIView的子类对象,当要显示键盘时,系统将键盘实例添加到一个window上。多个window被组织成一个队列,放在[UIApplicationsharedAppl原创 2016-09-20 14:46:44 · 277 阅读 · 0 评论 -
键盘显示
键盘的显示是系统的行为,当一个UITextfiel或者UITextView实例成为first responder的时候,(通过发消息给becomeFirstResponder实现)系统会调起键盘。键盘实例对象是UIView的子类对象,当要显示键盘时,系统将键盘实例添加到一个window上。多个window被组织成一个队列,放在[UIApplicationsharedApplication]原创 2016-09-20 11:01:31 · 258 阅读 · 0 评论