Object-C
文章平均质量分 64
JackLee18
这个作者很懒,什么都没留下…
展开
-
iOS开发如何限制NSNotification的作用范围
在实际的开发中NSNotification能够很好地解耦代码,跨层传输数据等。但是由于是全局生效的。因此有时候我们不想作用范围那么广,只想局限在某个范围内进行通知的发送与接收。最近弄了一个方案,分享给大家。我这边主要分为两部分进行处理在某个类的范围内生效 在实际的开发过程中,有时候通知的范围只在与某个类的范围内生效,也即只要是这个类创建的对象内都会生效,在app运行期间可能同时存在一个类的多个对象。针对这种情况,我这边将通知的发送,接收和类名进行了关联。这样能够保证通知只在该类相关的范围内生效。原创 2021-09-19 08:25:57 · 267 阅读 · 0 评论 -
iOS开发中NSNotification的便利使用
NSNotification的使用有几个痛点:1)无法自动释放监听;2)重复添加监听没有提示;3)使用不够便利。最近在推动项目中使用swift,将原来的OC代码写了一个swift版本分享给大家。实现原理OC版本主要通过NSObject的分类,动态绑定一个数组,每次添加通知的监听,都会创建一个proxy对象,将这个proxy对象添加到刚才动态添加的数组中。这个proxy是真正的通知的监听者。并且响应处理通知的block,释放的时候会移除监听。能够实现proxy对象释放时,自动移除监听。一个对象被释放原创 2021-09-16 07:48:04 · 351 阅读 · 0 评论 -
iOS 蓝牙开发实现文件传输
这是一篇旧文,三年前就写过了,一直没有时间分享出来,最近简单整理了下,希望能帮到有需要的人。 由于我这里没有相关的蓝牙设备,主要用了两个手机,一个作为主设备,一个做为从设备。另外进行蓝牙开发有一个调试利器。主设备和从设备我分别创建了一个管理类。主设备主要进行的操作如下:开始扫描设备停止扫描设备连接设备断开连接设备发送数据具体源码如下:#import <Foundation/Foundation.h>#import <CoreBluetooth/CoreBl原创 2021-09-04 11:03:09 · 2535 阅读 · 0 评论 -
谈一谈iOS开发后台下载
由于iOS系统对于后台执行任务管控比较严格,如果app没有任务继续执行,那么app在进入后台一段时间后会被系统杀死。如果下载大文件的话,需要考虑如何在app进入后台后继续下载。app保活策略 app保活是指app进入后台后,通过静默的重复执行某个后台允许的任务,保证App不被系统杀死。例如:后台播放没有声音的音频。app保活应用比较广泛,不仅仅可以实现后台下载大文件。其他的应用场景:比如用户通过一定路径进入某个比较重要的页面,但这个页面操作可能需要切换app等,为了让用户下载进入app的时候仍然原创 2021-07-12 22:57:13 · 1614 阅读 · 4 评论 -
JKNetworking完整文档
前言这个网络请求框架主要是参考了YTKNetwork的实现思路,结合自己工程进行了进一步的封装,这个框架比较适合大型业务比较复杂的app。基本组成具体功能基本功能能够正常的进行GET,POST,PUT,DELETE,HEAD,PATCT 等网络请求,能够实现文件的上传下载等功能。这个大多数网络请求都能够实现。高级功能1)支持链式网络请求所谓链式网络请求就是一个请求完了,接着执行下一个网络请求。一个网络请求开始的前提必须是上一个网络请求正常结束。允许提前结束链式网络请求2)支持类组队列的网原创 2021-05-27 07:55:13 · 415 阅读 · 0 评论 -
发现手动实现KVO的一个坑
最近项目开发用到了派生子类的知识,从网上看了一下手动实现KVO的源码,网上发现大家的源码实现差不多。好像都是从一个大佬那里抄来的。参考博客地址如下:https://tech.glowing.com/cn/implement-kvo/https://www.jianshu.com/p/bf053a28accb源码地址:https://github.com/Jerry4me/JRCustomKVODemo运行了一下源码发下源码中对与非Object类型的属性进行监听时,会崩溃。比如age,NSInt原创 2020-09-06 00:55:57 · 282 阅读 · 0 评论 -
O-C中的初始化与关键字
O-C中有两个关键字可以在方法的实现中代表执行方法的对象: self:执行方法的对象本身 super:调用对象的父类中的实现来执行方法 self除了可以用作向自身请求方法以外,还可以作为一 个代表对象本身的隐藏变量来使用 super只能出现在消息表达式中,代表了对被复写的方法的原始实现的请求方式 O-C中对象的创建需要两个部分,第一:内存分类(Alloc转载 2013-11-26 20:11:12 · 1272 阅读 · 0 评论 -
OC中的动态绑定
基于动态类型,在某个实例对象被确定后,其类型便被确定了。该对象对应的属性和响应的消息也被完全确定,这就是动态绑定。在继续之前,需要明确Objective-C中消息的概念。由于OC的动态特性,在OC中其实很少提及“函数”的概念,传统的函数一般在编译时就已经把参数信息和函数实现打包到编译后的源码中了,而在OC中最常使用的是消息机制。调用一个实例的方法,所做的是向该实例的指针发送消息,实例在收到消息后,转载 2013-11-28 17:15:12 · 2884 阅读 · 0 评论 -
NSDate的常用用法
1.创建或初始化可用以下方法1)用于创建NSDate实例的类的方法+(id)date;返回当前时间。 +(id)dateWithTimeIntervalSinceNow:(NSTimeInterval)secs;返回当前时间为基准,然后过了secs秒的时间。 +(id)dateWithTimeIntervalSinceReferenceDate:(NSTimeInt原创 2013-11-29 21:59:33 · 1087 阅读 · 0 评论 -
IOS实现小型计算器
对于初学者来说在编辑一款在IOS操作系统上可以运行的计算器对于鼓舞大家的士气很有必要,但是网上有好多的计算器虽然功能很强大,但是对于初学者 来说难于理解,所以作为曾经的一名初学者,我做了一个简单的计算器,易于理解,功能也很简单,希望通过这个简单的计算器,能给绑到大家,如果有不完善的还请大家多多批评指教。首先呢,编辑这个计算器用到了两种控件,Label和Button控件,Label控件用于显示结原创 2013-12-10 19:46:00 · 4138 阅读 · 0 评论 -
OC中Foundation
****************************NSNumber*******************************1)基本类型转换成对象int num =1;float num2 = 4.5;BOOL isBool = NO;char c = 'c';封装成对象//类方法的实现NSNumber *IntNumber = [NSNumber num原创 2013-11-29 11:31:48 · 1056 阅读 · 0 评论 -
initWithString与stringWithString的异同?
stringWithString是类方法,返回一个auto-released的指向NSString的指针,所以不需要手工释放(自动释放池会释放它)。initWithString是实例方法,返回一个指向NSString的指针,同时该对象的retain count为1,所以需要手工release,否则内存泄露。相同点:都可以创建一个新的NSString。转载 2013-12-10 20:43:27 · 2519 阅读 · 0 评论 -
UIAction Sheet 的使用
有时,我们在用户执行操作后比如,邮件发送后的确认,文件删除后的确认,等等都需要用到这个知识点,所以下面就为大家来分享一下;我们只需要建立一个单视图,并在HHLAppDelegate.m中新建navigationController 的对象,并把这个对象设置为当前的根视图控制器,而在HHLViewController.m中加载UIActionSheet的对象,并设置相应地操作。具体代码如下:原创 2013-12-28 20:47:17 · 2041 阅读 · 0 评论 -
键盘隐藏的几种方法
1、点击键盘上的Done按钮来关闭键盘 当用户按下Done按钮时,将生成一个Did End On Exit事件; 在项目导航中,建立一个ViewController,最好加上一个前缀,添加一行蓝色标注的代码,如下所示:在YueViewController.m底部(@end之前)添加以下操作方法:在导航项目中选择YueViewController.xib,转载 2013-12-18 17:46:22 · 3282 阅读 · 0 评论 -
IOS手机中图片的复制粘贴,剪切
在应用程序中也可以使用剪切板时需要使用UIPasteboard类,使用的第一个步骤是取得UIPasteBoard的单一实例(single instance),可以通过generalPasteboard方法取得此种单一实例。编辑菜单可以通过UIMenuController类在应用程序中使用此编辑菜单。UIMenuController 通过sharedMenuController属性取得单一实例,原创 2013-12-29 22:23:50 · 5074 阅读 · 0 评论 -
IOS中通过URL地址下载相应地址的资源的实现。
这次主要说的是,通过指定相应的URL地址,通过发送请求,建立连接,并下载数据的过程,为了更好的理解,我们只实现这个过程,而不去关心下载了什么内容,对于下载的内容我们也暂时不作处理,留待以后解决。首先我们应该新建一个空视图的工程。然后在进行编码,发送请求有两种方式,同步请求和异步请求,在日常生活中异步请求要比同步请求更加的常见。所以我们先说一下异步请求。代码如下:HHLAppDelegate原创 2013-12-27 19:33:18 · 3255 阅读 · 0 评论 -
HTTP中GET与POST的区别
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。 1转载 2013-12-29 23:20:29 · 1292 阅读 · 0 评论 -
IOS手机模拟简单的浏览器
我们在工具条中追加4个按钮,触摸后依次调用goBack方法,goForward方法,reload方法,stopLoading方法。,基本上能够实现简单的浏览器的功能,最主要的还是利用了UIWebView的知识点,现在我们会发现以前感觉很牛X的东西,其实是那么的简单啊。,呵呵,你是否又增加了写自信。下面我给大家分分享一下代码,大家如果有不懂的,看看官方文档,或者百度一下,就知道了代码如下:原创 2013-12-30 21:23:56 · 1697 阅读 · 0 评论 -
文本的显示与编辑
我们以前用UILabel来显示文本,但是在UILabel中当文本长度超过显示区域时并不能显示滚动条,但是我们用UITextView可以很轻松的做到这一点,下面给大家分享一下代码如下:HHLAppDelegate.h#import @class HHLViewController;@interface HHLAppDelegate : UIResponder @propert原创 2013-12-30 20:00:55 · 1376 阅读 · 0 评论 -
在相关网站首页加载到手机上浏览网页
学了一段时间的IOS相信大家一定非常的想编写一个软件使自己的手机能够访问你指定的网站。其实呢这个实现起来非常的简单,下面我会为大家分享一下代码,另外还要实现网络的状态,就是那个白色的菊花,由于第一个实在是太简单了,我就写在一块了,大家一看就明白了。具体的代码如下:HHLAppDelegate.h#import @class HHLViewController;@inte原创 2013-12-30 20:25:38 · 1206 阅读 · 0 评论 -
XML与JSON 区别
1.定义介绍(1).XML定义扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。XML转载 2014-01-02 15:01:50 · 879 阅读 · 0 评论 -
手势识别器UIGestureRecognizer实现手机的各种手势操作功能
手势识别器可以实现好多的手势功能,比如单击,双击,移动,旋转,滑动,长按等等。这些功能都是通过创建相关类的对象,并调用相关的方法来实现的。单击,双击主要是通过UITapGestureRecognizer然后通过判断UITapGestureRecognizer的对象pDoubleTap.numberOfTapsRequired =2;来实现单击与双击的区分。而移动主要是通过UIPan原创 2013-12-19 15:14:23 · 2148 阅读 · 0 评论 -
iOS学习之 plist文件的读写
在做iOS开发时,经常用到到plist文件, 那plist文件是什么呢? 它全名是:Property List,属性列表文件,它是一种用来存储串行化后的对象的文件。属性列表文件的扩展名为.plist ,因此通常被称为 plist文件。文件是xml格式的。Plist文件通常用于储存用户设置,也可以用于存储捆绑的信息我们创建一个项目来学习plist文件的读写。转载 2013-12-19 15:36:38 · 1163 阅读 · 0 评论 -
JSON的几种解析方式的比较
作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式。有的json代码格式比较混乱,可以使用此“http://www.bejson.com/”网站来进行JSON格式化校验(点击打开链接)。此网站不仅可以检测Json代码中的错误,而且可以以视图形式显示json中的数据内容,很是方便。从IOS5开始,APPLE提供了对json的原生支持(NSJSONSeri转载 2014-01-03 09:17:50 · 1813 阅读 · 0 评论 -
property 中的strong 与weak的区别
strong关键字与retain关似,用了它,引用计数自动+1,用实例更能说明一切 @property (nonatomic, strong) NSString *string1; @property (nonatomic, strong) NSString *string2; 有这样两个属性, @synthesize stri转载 2013-12-12 10:33:32 · 1289 阅读 · 0 评论 -
IOS 数据持久化只归档与取消归档
以前在学习OC的时候归档这一块老师偷懒没有讲,给我造成了很大的麻烦,总感觉这一块不熟悉,看书的话,这一个知识点都看了好几遍,还是没有掌握,最近我又重新来了一边,对于归档有了自己的一些心得,特来给大家分享一下,另外呢,还有一个代码,里面有完整版的归档,和取消归档,我个人感觉这个代码很经典,值得大家收藏哦,网上的理论讲的很多,我的博客里面有转载的讲的比较好的,这里就不说了,我主要和大家分享一下,这个程原创 2014-01-07 16:08:25 · 2988 阅读 · 0 评论 -
IOS的归档
归档也叫序列化,是将文件存在硬盘,解档是从硬盘还原5种方式:第一种、使用属性列表进行归档如果对象是NSString,NSDictionary,NSArray,NSData或者NSNumber,可以使用writeToFile:atomically方法将数据写到文件,注意这种方式是明文sample: NSArray *array = @[@"a转载 2014-01-07 16:15:46 · 1053 阅读 · 0 评论 -
IOS编程实用的技巧网络状态改变时的提示
从事手机开发的我们都知道,当前较大一部分的APP都利用到了网络但是如何能够给用户及时的提醒,在网络断开,或者网络状态发生改变的时候,这是一个值得深思的问题,有人说设置监视,每隔一段时间,扫描一下,当然可以,但是对于手机的各种资源来说,有点浪费。所以我们只用判定手机的网络状态是否发生改变,就可以了,改变时才启动相关的程序,这样是不是很好呢,所以下面为大家来分享一段代码,希望大家能够共同进步哦。代原创 2013-12-25 14:51:51 · 2317 阅读 · 0 评论 -
利用字典dictionary实现表视图的分组显示
刚刚学习了表示图的建立,但是实际的应用中我们的表视图上面的表格都是分组显示的,怎么才能实现呢?我们可以利用字典类创建一个相应的对象_dataSource,然后对应的key,相应的值,在我的程序里我们可以通过这句代码来实现: NSArray *object1 = [NSArrayarrayWithObjects:@"张三",@"李四",@"王五",nil];原创 2013-12-25 15:59:41 · 2317 阅读 · 0 评论 -
UITableViewController表视图建立过程中自定义单元格的创建,通过URL地址下载图片
刚刚学过表视图建立的朋友,一定都很想创建一些自己定义的单元格,以满足自己的个性化需求,其实这个不难,下面我来和大家分享下,另外呢,我新添加了一个功能,就是,每个单元格的内容,里面的填充的图片是我通过URL地址下载得到的。在代码实现之前我们需要建立一个plist文件来保存我们需要的图片的URL地址。具体步骤如下:打开root.plist文件,如下所示:原创 2013-12-25 15:33:08 · 1383 阅读 · 0 评论 -
IOS通过加速感应器实现手机实现手机屏幕上的足球可以来回的滚动反弹
用过360安全卫士的朋友都应该知道,有的时候360安全卫士回出来一个小球,让你摇动手机,来计算你消耗的热量,很有趣,其实这个功能实现起来非常的简单。新建一个单视图工程,然后需要找到一张的足球图片,截图使它的格式为png格式,并把这张图片拖到工程内。,然后就是通过加速度感应器来实现。通过足球图片建立图片视图,并把它添加到根视图上。然后设置图片视图的中心坐标,设置屏幕的界限,当图片视图的中心坐标越原创 2013-12-27 18:53:57 · 1928 阅读 · 0 评论 -
IOS简单的实现手机震动的提示
我们都知道手机有震动功能,其实呢,这个功能实现起来特别的简单,我们只需要用到几个函数就可以了:- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event- (void原创 2013-12-27 18:20:41 · 4455 阅读 · 0 评论 -
iOS 委托代理(delegate)入门
一、什么是委托 首先让我们来看看委托的定义:委托(delegate),就是某个对象指定另一个对象处理某些特定任务的设计模式。通俗来说,就是“某个对象”把要做的事情委托给“另一个对象”去做,简单吧。 其中“某个对象”被称作委托者,“另一个对象”被称作是被委托者。 【注】:委托者与被委托者的叫法很多,例如(普通对象与委托对象,委托与代理等等)为了方便转载 2014-02-21 20:24:55 · 1307 阅读 · 0 评论 -
IOS Table中Cell的重用reuse机制分析
创建UITableViewController子类的实例后,IDE生成的代码中有如下段落:- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = [NSString转载 2014-02-21 16:52:38 · 841 阅读 · 0 评论 -
NSNotification的用法
前文:用户可能使用RaiseMan并打开了几个document, 然后他发现紫色的背景颜色实在是不利于阅读文档正文. 于是,他打开Preferences panel修改背景颜色,不过令人失望的是,已经存在的文档的背景颜色不会跟着改变. 于是,这个用户可能会写信给你告诉你这些. 你也许会回复:"defualts会在document创建的时候才读取,保存document在打开"实际上,用户想说转载 2014-02-21 17:41:42 · 1026 阅读 · 0 评论 -
UIColor,CGColor,CIColor三者的区别和联系
最近看了看CoreGraphics的东西,看到关于CGColor的东西,于是就想着顺便看看UIColor,CIColor,弄清楚它们之间的区别和联系。下面我们分别看看它们三个的概念:一、UIColor UIColor是UIKit中存储颜色信息的一个重要的类,一个UIColor对象包含了颜色和透明度的值,它的颜色空间已经针对IOS进行了优化。UIColor包含了一些类方法用于创建一转载 2014-02-24 21:24:19 · 1046 阅读 · 0 评论 -
CGContextRef用法
1、简介Quartz。Quartz 是主要的描画接口,支持基于路径的描画、抗锯齿渲染、渐变填充模式、图像、颜色、坐标空间变换、以及PDF 文档的创建、显示、和分析。UIKit 为Quartz 的图像和颜色操作提供了Objective-C 的封装。Core Animation 为很多UIKit 的视图属性声明的动画效果提供底层支持,也可以用于实现定制的动画。在调用您提供的drawRe转载 2014-02-26 17:24:03 · 1042 阅读 · 0 评论 -
OC中的一些关键术语&&@property assign retain copy的区别
类:是一种结构,它表示对象的类型,对象引用类来获取和本身有关的各种信息,特别是运行什么代码来处理每种操作。对象:是一种结构,它包含值和指向其类的隐藏指针。实例:对象的另一种称呼。消息:是对象可以执行的操作,用于通知对象去做什么。对象接收消息后,将查询对应的类,以便查找正确的代码来运行。方法:是为响应消息而运行的代码,根据对象的类,消息可以调用不同的方法。接口:是对象的类应该提供原创 2013-11-27 16:54:56 · 1838 阅读 · 0 评论 -
socket通信简介
目录(?)[+]“一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是sock转载 2014-02-21 21:45:10 · 1229 阅读 · 2 评论 -
[Objective-C]Class类型、class方法
Class类型 到目前为止,我们已经知道了对应于方法的SEL数据类型,和SEL同样在Objective-C里面我们不仅仅可以使用对应于方法的SEL,对于类在Objective-C也为我们准备了类似的机制,Class类型。当一个类被正确的编译过后,在这个编译成功的类里面,存在一个变量用于保存这个类的信息。我们可以通过一个普通的字符串取得 这个Class,也可以通过我们生成的对象取得这转载 2014-03-13 14:56:14 · 4370 阅读 · 0 评论