
iOS
文章平均质量分 67
天下只此一家
每个人的能力有大有小关键在于其态度
展开
-
超级简单的Swift5入门实例
Swift已经版本5了,越来越普及,作为一只一直写OC的猿,很有必要学习下,花了点时间写了下基础的Swift,之前看Swift语法也有几次了,但是不用一下就忘记了,果然还是动手才是真的,看东西比较虚,强烈建议只是看了几遍Swift语法的同学,写下简单的Swift,这样提升还是很大的,哪怕是看着别人的项目练手。 上传个超级简单的Swift项目,无涉及数据库,掌握了话基...原创 2020-01-10 17:21:15 · 2579 阅读 · 0 评论 -
iOS基础知识6
一、使用block时什么情况会发生循环引用,如何解决?一个对象中强引用了block,在block中又强引用了该对象,就会发生循环引用。解决方法是将该对象使用__weak或者__block修饰符修饰之后再在block中使用。1、id __weak weakSelf = self;或者__weak __typeof(self) weakSelf = self;2、id原创 2017-09-07 23:59:45 · 318 阅读 · 0 评论 -
iOS基础知识5
一、objc使用什么机制管理对象内存?通过retainCount的机制来决定对象是否需要释放。每次RunLoop的时候,都会检查对象的retainCount,如果retainCount 为0,说明该对象没有地方需要继续使用了,可以释放掉。二、ARC通过什么方式帮助开发者管理内存?ARC相对于MRC,不是在编译时添加retain、release、autorel原创 2017-09-07 18:09:10 · 1069 阅读 · 0 评论 -
隐私政策
产品上线时候apple要这个隐私政策,可以具体修改就行。 黔源电力尊重并保护所有使用服务用户的个人隐私权。为了给您提供更准确、更有个性化的服务,黔源电力会按照本隐私权政策的规定使用和披露您的个人信息。但黔源电力将以高度的勤勉、审慎义务对待这些信息。除本隐私权政策另有规定外,在未征得您事先许可的情况下,黔源电力不会将这些信息对外披露或向第三方提供。黔源电力会不时更新本隐私权政策。 您在同意黔...原创 2017-03-02 09:02:58 · 698 阅读 · 0 评论 -
Objective-C的initialize和init
Objective-C很有趣的一个地方是,它非常非常像C。实际上,它就是C语言加上一些其他扩展和一个运行时间(runtime)。有了这个在每个Objective-C程序中都会起作用的附加运行时间,给了它一些动态的特性。C和C++没有运行时间,他们仅仅被编译为完全按照代码的顺序去执行,不多也不少。Objective-C中带有运行时间的好处是,它可以在你的程序运行的流程中进行参与。在Objec转载 2017-03-17 14:05:49 · 523 阅读 · 0 评论 -
iOS的initWithFrame、initWithCoder、awakeFromNib
当我们需要自定义一个View控件时,会有 initWithFrame、initWithCoder、awakeFromNib 这三个系统方法,关于这三个方法何时调用,如何调用,有时候可能很多人会弄混淆。 下面我会就理论结合代码举例来说明一下:1、initWithFrame- (instancetype)initWithFrame:(CGRect)frame{转载 2017-03-17 14:38:33 · 736 阅读 · 0 评论 -
iOS中property和synthesize的详细说明
我们要在一个类中定义属性,首先是要在.h文件中(或者说是在.m文件中的@interface的作用域中)使用关键字property来进行属性的声明,同时,在xcode的4.5版本以前,如果我们想要直接用属性名前面加上下划线构成的变量来进行操作的话,需要在.m文件中写上@synthesize student = _student(这里就用student代表一个属性),这样才能编译通过,成功使用_stu转载 2017-03-22 14:18:08 · 5416 阅读 · 0 评论 -
React-native 第三方组件
选项卡各种漂亮的小组件按钮输入框表单验证https://github.com/gcanti/tcomb-form-nativehttps://github.com/FaridSafi/react-native-gifted-formhttps://github.com/bartonhammond/snowflake炫酷效果的 TextInputhttps://git转载 2017-06-15 10:58:57 · 6514 阅读 · 0 评论 -
iOS基础知识6
一、使用block时什么情况会发生循环引用,如何解决?一个对象中强引用了block,在block中又强引用了该对象,就会发生循环引用。解决方法是将该对象使用__weak或者__block修饰符修饰之后再在block中使用。1、id __weak weakSelf = self;或者__weak __typeof(self) weakSelf = self;2、i原创 2017-09-08 14:30:24 · 288 阅读 · 0 评论 -
iOS基础知识6
一、使用block时什么情况会发生循环引用,如何解决?一个对象中强引用了block,在block中又强引用了该对象,就会发生循环引用。解决方法是将该对象使用__weak或者__block修饰符修饰之后再在block中使用。1、id __weak weakSelf = self;或者__weak __typeof(self) weakSelf = self;2、i原创 2017-09-08 12:59:58 · 219 阅读 · 0 评论 -
iOS CoreData
iOS CoreData在以前使用的时候,Create NSManagedObject Subclass...生成两个文件,如今的iOS版本生成的是4个文件,都是创建NSManagedObject。这样在开始编译时可能会遇到错误,我们可以删掉如下图所指的地方就可以了。CoreData简单实现增删改查://// ViewController.m原创 2017-09-16 15:57:12 · 444 阅读 · 0 评论 -
iOS定位权限弹框闪烁弹出后忽然消失
这种情况是定位对象设置为局部对象造成了,需要设置定位对象为全局对象,然后权限允许弹框正常,其他权限应同理。原创 2019-05-24 11:37:36 · 1716 阅读 · 0 评论 -
Xcode工程加载H5本地文件 H5里面引入js/css文件
在本地的H5项目里面,还有js/css文件,使用WKWebview怎么样把H5界面加载出来?首先把H5项目文件夹拷贝到Xcode项目下在Xcode里面,显示是绿色的文件夹,而不是黄色的文件夹。然后编写代码:[_wkWebView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle...原创 2019-05-09 11:45:25 · 1897 阅读 · 0 评论 -
智慧黔南隐私政策
智慧黔南尊重并保护所有使用服务用户的个人隐私权。为了给您提供更准确、更有个性化的服务,智慧黔南会按照本隐私权政策的规定使用和披露您的个人信息。但智慧黔南将以高度的勤勉、审慎义务对待这些信息。除本隐私权政策另有规定外,在未征得您事先许可的情况下,智慧黔南不会将这些信息对外披露或向第三方提供。智慧黔南会不时更新本隐私权政策。 您在同意智慧黔南服务使用协议之时,即视为您已经同意本隐私权政策全部内容。本隐...原创 2018-12-06 11:31:13 · 555 阅读 · 0 评论 -
iOS app开发第三方库
1、网络库网络库AFNetworking。以前用ASIHTTPRequest。2、图片下载图片下载和缓存一般就用SDWebImage这个第三方库。3、数据库第三方的fmdb以及iOS的CoreData。4、模型与字典互转推荐的库是MJExtension。5、自动布局iOS自带xib/Storyboard,推荐Masonry原创 2017-09-20 19:41:53 · 448 阅读 · 0 评论 -
Xcode报错:"Geo::GetiOSAppDocumentsDir()",Geo::PathUtils::GetSandboxDataPath()
创建了一个React Native工程,工程里有iOS部分,iOS部分的React Native的一些第三方库需要在iOS部分进行配置。在React Native工程中的iOS部分导入Unity导出的iOS工程,需要把Unity导出的iOS工程中的一些文件夹拷贝到React Native工程中的iOS部分,并且要设置头文件和库的路径,然后编译合并的工程。编译时Xcode报错:Undef原创 2017-09-09 21:49:51 · 916 阅读 · 0 评论 -
iOS的GCD怎么样实现同步
GCD下怎么样实现同步操作?这里有四种思路。第一串行队列,第二并行队列,第三分组,第四信号量。GCD下的dispatch_queue队列都是FIFO队列,就是按照提交到队列中的顺序执行,那这里分串行队列和并行队列是什么情况呢?串行队列是提交到队列里的任务按照提交的顺序执行,并且是执行完了上一个任务后再执行下一个任务;并行队列同样按照提交的顺序执行,不过不想串行队列一个任务执行完了后再执行下原创 2017-08-31 22:12:15 · 423 阅读 · 0 评论 -
Xcode报错:embedded dylibs/frameworks are only supported on iOS 8.0 and later
ld: embedded dylibs/frameworks are only supported on iOS 8.0 and later (@rpath/XCTest.framework/XCTest) for architecture armv7以前好久的代码,今天来编译时,发现出现了上面这个错误了,认真观察这个错误,是frameworks要再iOS 8.0以上环境才行,然后原创 2017-09-09 09:43:27 · 1105 阅读 · 0 评论 -
iOS基础知识9
一、IBOutlet连出来的视图属性为什么可以被设置成weak?既然有外链那么视图在xib或者storyboard中肯定存在,视图已经对它有一个强引用了,所以设置成weak比较好。不过这样漏了个重要知识,使用storyboard(xib不行)创建的VC,会有一个叫_topLevelObjectsToKeepAliveFromStoryboard的私有数组强引用所有top level转载 2017-09-08 20:16:17 · 269 阅读 · 0 评论 -
iOS基础知识8
一、addObserver:forkeyPath:options:context:各个参数的作用分别是什么?observer中需要实现哪个方法才能获得KVO回调?iOS中通知方面的内容:NSNotificationCenter通知中心、KVO(Key-Value Observing)键值观察 、Delegate代理、Callback回调。KVO是Key-Value Observing的缩写...原创 2019-10-30 13:08:48 · 867 阅读 · 0 评论 -
iOS基础知识7
一、GCD的队列(dispatch_queue_t)分哪两种类型?GCD队列分两种类型,串行队列Serial Dispatch Queue和并行队列Concurrent Dispatch Queue。队列可以接受任务,并且按照任务先到先执行的顺序来执行。二、如何用GCD同步若干个异步调用?(如根据若干个url异步加载多张图片,然后在都下载完成后合成一张整图)?使原创 2017-09-08 15:42:00 · 361 阅读 · 0 评论 -
iOS的成员变量、实例变量、属性变量
一、版本对比 在以前的iOS版本中: 我们为输出口同时声明了属性和底层实例变量,那时,属性是oc语言的一个新的机制,并且要求你必须声明与之对应的实例变量,例如: 注意:(这个是以前的用法)@interface MyViewController :UIViewController{ UIButton *myButton;}@pro转载 2017-09-04 19:05:38 · 402 阅读 · 0 评论 -
Objective-c的类目、延展、协议
概述OC用于拓展已存在类的内置功能是它最强大的功能之一。类目、延展、协议提供了可以让你扩展类功能的方式。使用他们,无需继承便可以扩展类功能。需要注意的是,这些手段只能增加类的方法,并不能用于增加实例变量,要想增加实例变量,还是需要定义子类来实现。1、类目(Category):指向已知的类,增加新的方法,不会破坏封装性。已知的类既包括已定义的类,也包括系统已有的类。2、延展(转载 2017-09-05 14:42:50 · 516 阅读 · 0 评论 -
iOS RunLoop
RunLoop表面意思运行循环,内部是由do-while循环实现。作用保证程序的持续运行,处理app的各种事件(滑动、定时器、selector等)、节省CPU资源。->如果没有RunLoop,以main函数入口为例:int main(int argc, char * argv[]) { NSLog(@"执行"); // 程序开始 return 0; //原创 2017-04-11 13:52:26 · 360 阅读 · 0 评论 -
drawRect方法
iOS在任何时候需要更新视图都是通过调用drawRect方法。->视图在屏幕上是新的->顶部视图被移除->视图的hidden属性改变->明确调用setNeedsDisplay()和setNeedsDisplayInRect()方法如果你需要更新视图,不要直接调用drawRect方法,调用setNeedsDisplay()方法。原创 2017-04-11 10:14:06 · 1178 阅读 · 0 评论 -
Storyboard搭建最基本的iOS app骨架
用Storyboard搭建的iOS app骨架如图1。 图11、把Storyboard中的控制器都删掉,拉取一个Tab原创 2017-03-14 10:26:05 · 1267 阅读 · 0 评论 -
WKWebView与JS交互
WKWebView是苹果在iOS8推出的,用来替换UIWebView,相比UIWebView,WKWebView速度更快,占用内存更少。Objective-C与JS交互的办法大致有:1、UIWebView拦截URL和WKWebView拦截URL。2、UIWebView调用JavaScriptCore,JavaScriptCore是iOS7新添加的框架。3、WKWebView使用WK原创 2017-03-13 15:06:15 · 13543 阅读 · 0 评论 -
CoreData存储NSDictionary、NSArray
CoreData是苹果推出的一个数据存储框架。CoreData提供了一种对象关系映射(ORM)的存储关系,CoreData可以将OC对象存储到数据库中,也可以将数据库中的数据转化为OC对象,这个过程不需要手动编写任何SQL语句,这是系统完成的,不像SQLite和FMDB。 CoreData里的类看着确实很头疼,常常记不住,不过还是贴出来加深下印象,有以下这四个:原创 2017-03-10 16:11:35 · 2993 阅读 · 0 评论 -
iOS 视频h264硬编码
记录下初始化方法,当时做的一些注释:- (void)initCompressionSession{ if(compressionSession){ VTCompressionSessionCompleteFrames(compressionSession, kCMTimeInvalid); VTCompressionSessionInv原创 2017-03-07 10:52:55 · 1665 阅读 · 0 评论 -
iOS 视频h264硬解码
if (iOSSYSTEMVERSION >= 8.0) { if (!_isPCVideoFrameData) { if (type == RTMPCLIENT_DATATYPE_AUDIO) { return; } uint8_t *videoFra原创 2017-03-07 10:26:46 · 3038 阅读 · 0 评论 -
抽取WebRTC的音频编解码库iLBC在iOS平台编译成静态库
WebRTC主要用来让浏览器实时获取和交换视频、音频和数据。浏览器本身不支持相互之间直接建立信道进行通信,都是通过服务器进行中转,A、B两个客户端之间信令还是要通过服务器传送,但这并不适合数据流的传输,WebRTC应运而生。 WebRTC是一个开源项目,旨在建立一个浏览器与浏览器之间的信道,这个信道开源发送任何数据,而不需要经过服务器,这里说不的不需要服务器并不是真的不需要服务器原创 2017-03-10 10:24:40 · 1853 阅读 · 2 评论 -
iOS 方法调用
iOS里方法调用不同于C/C++或其他语言,iOS方法调用形式是[reciver message],reciver是一个对象,但是这并不是马上执行reciver对象的message方法,而是向reciver对象发送一条message消息,1、这条消息可能由对象reciver来处理,2、也可能由转发给其他对象来处理,3、也可能假装没收到这条消息而没有处理。 其实[reciver messa原创 2017-03-08 17:12:33 · 1024 阅读 · 0 评论 -
iOS runtime扩大UIButton点击范围
我们知道C代码一般经过预处理、编译、链接、运行然后在平台上跑起来,Objective-C是基于C加入了面向对象和消息转发的动态语言,所以除了需要一个编译器外,还需runtime系统来动态创建类和对象。 iOS Category可以给一个现有类添加属性,当然不是简单的添加,需要用runtime机制。但是我们是不是总是看到类别中只能添加方法,不能添加实例变量,那这句话不是有问题了么?当原创 2017-03-08 14:55:39 · 3604 阅读 · 1 评论 -
Xcode Lost connection to "xxxipad"
Restore the connection to "xxxipad" and run ...app 运行消耗内存过大,造成的。可在Xcode 中的Show the Debug navigator中查看app的memory。原创 2016-02-22 15:37:15 · 7623 阅读 · 0 评论 -
iOS8 模态视图跳转动画
UIPresentationController是iOS8以后出来的类,可以自定义模态视图跳转动画。 我现在Storyboard创建个视图控制器ShowInfoViewController,这就是我要跳转到的视图控制器。想要自定义跳转动画,先要设置视图控制器实例的modalPresentationStyle为UIModalPresentationCustom。然后实现设置该实例的UI原创 2017-03-17 09:28:41 · 1598 阅读 · 0 评论 -
NSDate相差8个小时
直接看代码,有详细的注释可以知道具体怎么用:[objc] view plain copy NSDate * date = [NSDate date]; NSLog(@"date:%@", date); NSDateFormatter * outputFormatter = [[NSDateFormatter alloc转载 2017-04-18 10:22:59 · 534 阅读 · 0 评论 -
iOS基础知识1
一、@property中有哪些属性关键字?1、strong:释放旧对象将旧对象的值赋予输入对象,再提高输入对象的索引计数为1,此关键字经常使用。2、weak:不增加引用计数,不持有对象,因此也不能决定对象释放,对比assign的一个好处是,当对象消失时指针自动归为nil。3、assign:适用于基础数据类型(NSInteger、CGFloat、...)不增加引用计数。4、copy:原创 2017-09-06 23:24:43 · 585 阅读 · 0 评论 -
iOS基础知识2
一、objc中向一个nil对象发送消息将会发生什么?什么都不会发生!SomeClass *someObject;someObject = nil;[someObject doSomething];向nil发送了doSomething,OC中nil是被当做0定义的。也就是说Runtime时要去获取这个nil的信息,会去读取内存中0的位置,这肯定是不允许的,根据返回值类型,会返回nil原创 2017-09-07 14:14:55 · 355 阅读 · 0 评论 -
iOS基础知识3
一、Runtime如何通过selector找到对应的IMP地址?(分别考虑类方法和实例方法)每一个类对象中都一个方法列表,方法列表中记录着方法的名称、方法实现、以及参数类型,其实selector本质就是方法名称,通过这个方法名称就可以在方法列表中找到对应的方法实现。二、使用Runtime Associate方法关联的对象,需要在主对象dealloc的时候释放么?原创 2017-09-07 15:04:22 · 304 阅读 · 0 评论 -
iOS基础知识4
一、RunLoop和线程有什么关系?每个线程,包括主线程(main thread),都有与之对应的RunLoop对象。主线程的RunLoop是默认启动的,子线程的RunLoop默认是不开启的,需要手动开启子线程的RunLoop。iOS程序里面,程序启动后会有这样的一个main()函数:int main(int argc, char * argv[]) { @autore原创 2017-09-07 16:00:30 · 254 阅读 · 0 评论