Objective-C
HANXIUHUI
Java iOS
展开
-
autorelease的对象与@autoreleasepool
首先,看两段代码执行之后,内存的变化:1、// 未使用@autoreleasepoolfor (int i = 0; i < 100000; i ++) { UIImage *img = [UIImage imageNamed:@"test.jpg"]; NSLog(@"%@", @(i)); }分析:imageName 返回的是 autor...原创 2019-01-15 10:49:00 · 318 阅读 · 0 评论 -
处理侧滑返回与 ScrollView 手势冲突
与处理双击、单击手势互斥原则一样:// 手势互斥(侧滑返回手势失效后才响应UITableView的滑动手势)[tableView.panGestureRecognizer requireGestureRecognizerToFail:self.navigationController.interactivePopGestureRecognizer]; ...原创 2016-09-29 17:32:00 · 240 阅读 · 0 评论 -
iOS10 适配
1、权限设置iOS10,访问系统权限需要在info.plist中注册,否则直接crash!注意,Value值不可为空,否则会被Appstore拒掉!2、Notification,学习资料喵神总结 UsersNotifications:苹果官方文档;、苹果官方视频1、苹果官方视频2、苹果官方视频33、关于iOS10中的ATS问题4、Xcode8无用Log:...原创 2016-09-13 09:30:00 · 85 阅读 · 0 评论 -
Notification与多线程
一个NSNotificationCenter对象(通知中心)提供了在程序中广播消息的机制,它实质上就是一个通知分发表。这个分发表负责维护为各个通知注册的观察者,并在通知到达时,去查找相应的观察者,将通知转发给他们进行处理。[原文:An NSNotificationCenter object (or simply, notification center) provides a mechanis...原创 2016-04-28 10:14:00 · 179 阅读 · 0 评论 -
UIView动画
UIView 动画可以设置的动画属性:位置变化(frame) 大小变化(bounds) 中心点位置(center) 旋转、缩放等(transform) 透明度(alpha) 背景颜色(backgroundColor) 拉伸内容(contentStretch)UIView的Block动画块,为iOS4.0以后增加,提供更简洁的方式来实现动画。常用 Block 块...原创 2016-04-26 09:23:00 · 104 阅读 · 0 评论 -
NSJSONSerialization
简介:NSJSONSerialization 可以将 JSON 转换为 OC 对象或将 OC 对象转为 JSON 数据。可以被转为 JSON 的对象具有以下属性:对象为 NSArray 或 NSDictionary; 所有对象都是 NSString, NSNumber, NSArray, NSDictionary, or NSNull.的实例; 字典的键值必须为 NSString ...原创 2016-04-25 23:45:00 · 127 阅读 · 0 评论 -
iOS —— 单元测试(一)
目录一、简介二、苹果自带的XCTest一、简介单元测试是指开发者编写代码,去验证被测代码是否正确的一种手段,其实就是用代码去检测代码。合理的利用单元测试可以提高软件的质量。二、苹果自带的XCTest1.创建我们的工程,勾选 Include Unit Tests2.创建单元测试类3.命名和继承的父类UserInfoModelTest.m中的代码:+ (void)setU...原创 2019-02-13 14:13:03 · 462 阅读 · 0 评论 -
强制使用系统键盘 & 自动锁屏
1. 强制使用系统键盘- (BOOL)application:(UIApplication *)application shouldAllowExtensionPointIdentifier:(NSString *)extensionPointIdentifier{ if ([extensionPointIdentifier isEqualToString:@"com.apple.k...原创 2016-06-02 11:41:00 · 172 阅读 · 0 评论 -
iOS APP 上线打包两种方式
为什么要说这两种方式呢?因为,今天版本迭代使用 Application Loader 上传用 iTunes打包的文件时 碰到了一堆以往不曾碰到的错误信息,但是用另外一种打包方式确没有问题。ERROR ITMS-90166: "Missing Code Signing Entitlements. No entitlements found in bundle 'com.apple.dt.x...原创 2016-04-12 17:06:00 · 427 阅读 · 0 评论 -
APP上线碰到的问题:Non-public API usage
①、Non-public API usage:The app references non-public symbols in XXXX: _UICreateCGImageFromIOSurface原因:我在项目里面导入了Reveal.framework框架解决方案:上线之前,删除该框架(在other linker 里面配置的 -ObjC也去掉),问题解决。②、Non-public A...原创 2016-01-15 15:42:00 · 1637 阅读 · 0 评论 -
FMDB简单使用
概念FMDB 是 iOS 平台的 SQLite 数据库框架; FMDB 以 OC 的方式封装了 SQLite 的 C 语言 API。以面相对象的方式操作数据库。FMDB的优点1) 使用起来更加面向对象,省去了很多麻烦、冗余的C语言代码;2) 对比苹果自带的 Core Data 框架,更加轻量级和灵活;3) 提供了多线程安全的数据库操作方法,有效地防止数据混乱;A...原创 2016-04-11 15:26:00 · 124 阅读 · 0 评论 -
iOS中的数据存储方式_SQLite3
iOS中的数据存储方式_SQLite3优点:1) SQLite是一款轻型的嵌入式数据库;2) 它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了3) 它的处理速度比Mysql、PostgreSQL这两款著名的数据库都还快什么是SQL:1) SQL(structured query language):结构化查询语言;2) SQL是一种对关系型数据库中...原创 2016-04-10 17:30:00 · 131 阅读 · 0 评论 -
iOS URL含有中文时的处理办法
服务端给返回的网页加载不出来,仔细一看,url是空的!!为什么呢。示例:NSString *urlStr = @"http://服务器返回带有汉字的url字符串.com";NSURL *url = [NSURL URLWithString:urlStr];DLog(@"url = %@", url);打印结果:<ViewController.m : -[ViewCon...原创 2016-04-09 22:57:00 · 579 阅读 · 0 评论 -
iOS数据存储 —— NSUserDefaults
NSUserDefaults适合存储轻量级的本地数据,项目中,我会把一些简单的数据密码、网址、登陆状态BOOL、整型/浮点型数据等和用户有关的数据用它存储。但是它不能存储自定义的对象!实例化一个 NSUserDefaults 对象:/** * @brief 创建app整个生命周期内的唯一示例对象 * */+ (NSUserDefaults *)standardUserDe...原创 2016-04-08 14:45:00 · 127 阅读 · 0 评论 -
iOS 数据存储 —— Plist
plist可以存储的数据类型有哪些:只能存储OC常用数据类型(NSString、NSDictionary、NSArray、NSData、NSNumber等类型),而不能直接存储自定义模型对象;我们拿NSData举例:/********** 写入plist文件 **********/ // plist文件写入路径 NSString *docPath1 = NSSearc...原创 2016-04-08 14:04:00 · 140 阅读 · 0 评论 -
UICollectionViewLayout
UICollectionViewLayout的功能为向UICollectionView提供布局信息。实现一个自定义layout的常规做法是继承UICollectionViewLayout类,然后重载下列方法: 1 /// UICollectionViewLayout的方法 2 /** 3 返回collectionView的内容的尺寸(注意:这里的尺寸不是可视部分的尺寸,应该所有内容的尺...原创 2016-03-31 12:42:00 · 82 阅读 · 0 评论 -
iOS带有占位文字和占位图片的UITextView
传送门:TKPlaceholderTextView原创 2019-08-05 16:31:08 · 463 阅读 · 0 评论 -
iOS - 录制amr格式语音,随音量变化的动画
传送门:TKAudio原创 2019-08-05 16:32:38 · 825 阅读 · 0 评论 -
NSCopying
///< .h@interface ChatManager : NSObject <NSCopying>@property (nonatomic) NSUInteger index;@property (nonatomic, copy) NSString *name;@property (nonatomic, strong) NSArray *titles;@prop...原创 2016-09-30 15:05:00 · 64 阅读 · 0 评论 -
ReactiveCocoa学习
一、RACSiganl ,在RAC中最核心的类,信号类,一般表示将来有数据传递,只要有数据改变,信号内部接收到数据,就会马上发出数据,但它本身并不具备发送信号的能力,而是交给内部一个订阅者去发出。默认一个信号都是冷信号,也就是值改变了,也不会触发,只有订阅了这个信号,这个信号才会变为热信号,值改变了才会触发。如何订阅信号:调用信号RACSignal的subscribeNext就能订阅。 ...原创 2017-11-11 10:41:00 · 116 阅读 · 0 评论 -
iOS url 不支持问题
RFC 1738 硬性规定:&quot;只有字母和数字[0-9a-zA-Z]、一些特殊符号&quot;$-_.+!*'(),&quot;[不包括双引号]、以及某些保留字,才可以不经过编码直接用于URL。&quot;如下链接:http://www.xxx.cn/How do you spell Mendes.pdfurl 中存在非法字符,我们必须编码后使用,这样服务端才能理解客户端的请求。解决办法:NSString *ur...原创 2019-01-21 11:33:10 · 3304 阅读 · 0 评论 -
Cocoapods —— 创建私有pod,并使用
.podspec: 本地代码仓库索引描述文件,CocoaPods通过该文件对存放源代码的 Git 仓库进行索引和下载。该文件路径如下:目录1. 创建第一个用于存储 .podspec 后缀文件的私有 Git 仓库2. 创建第二个用于存储的共享代码的私有 Git 仓库3. 本地创建后续要被共享的Lib工程4. 上传.podspec到第一个远程私有仓库5. 如何使用私有库制作私有P...原创 2019-02-14 21:36:41 · 745 阅读 · 0 评论 -
runtime - 消息机制
做如下配置,使用 runtime 代码时会有适当的提醒: OC方法调用的本质是消息转发,消息机制的本质// 创建一个Person类,添加方法- (void)eat { NSLog(@"eat方法调用"); }// OC方法创建Person的实例对象:Person *p = [[Person alloc] init];[p eat];// runt...原创 2018-03-14 15:44:00 · 79 阅读 · 0 评论 -
Status bar —— 设置状态栏的显示、隐藏、背景颜色、文字颜色
一、设置状态栏显示和隐藏1、通过 Info.plist 文件增加字段,控制状态栏全局显示和隐藏在 Info.plist 文件中增加字段 Status bar is initially hidden 设置为 YES ,那么 app 在 LaunchScreen 页面隐藏状态栏 在 Info.plist 文件增加字段 View controller-based status bar app...原创 2017-11-30 14:07:00 · 481 阅读 · 0 评论 -
自动布局之-NSLayoutConstraint
AutoLayout概念是苹果自iOS6开始引入的概念。目前为止,实现自动布局技术选型方面也可以使用xib和storyboard。在开发过程中通常登录、注册等变动可能性较小的视图,我会采用xib开发,其他页面通常会采用Masonry布局。xib和手码各有优势,视情况而定。关于NSLayoutAttributeLeading和NSLayoutAttributeTrailing,前边和后边并不...原创 2017-11-16 17:19:00 · 308 阅读 · 0 评论 -
点语法
一、点语法的本质是方法的调用,而不是访问成员变量(OC中访问成员变量只能使用->),当使用点语法时编译器会自动展开成相应的方法(编译器特性)。点语法陷阱(ARC):1)死循环- (void)setAge:(int)age { self.age = age;}分析:self.age = age 实际为赋值调用 set 方法; 会被编译器展开成如下代码,造成了死循环!...原创 2015-04-25 13:09:00 · 280 阅读 · 0 评论 -
iOS深拷贝与浅拷贝
概念对象拷贝有两种方式:浅复制和深复制。顾名思义,浅复制,并不拷贝对象本身,仅仅是拷贝指向对象的指针;深复制是直接拷贝整个对象内存到另一块内存中。如图详解: 再简单些说:浅复制就是指针拷贝;深复制就是内容拷贝。集合的浅拷贝 (shallow copy)集合的浅复制有非常多种方法。当你进行浅复制时,会向原始的集合发送retain消息,引用计数加1,同时指针被拷贝到新的集合。...转载 2016-02-19 13:43:00 · 81 阅读 · 0 评论 -
UIViewAnimationOptions
常规动画属性设置(可以同时选择多个进行设置)UIViewAnimationOptionLayoutSubviews:执行UIView动画时,自动更新Subview的Layout约束。。UIViewAnimationOptionAllowUserInteraction:动画过程中允许用户交互。UIViewAnimationOptionBeginFromCurrentState:所有视图从...原创 2016-02-18 11:11:00 · 171 阅读 · 0 评论 -
iOS开源库
(一)网络中常用的1、网络库:AFNetworking2、图片缓存:SDWebImage3、网络监测 Reachability4、刷新控件:MJRefresh5、轮播图SDCycleScrollView6、提示HUD:MBProgressHud、SVProgressHud7、公告栏:AutoScrollLabel 、MarqueeLabel8、UIWebView的...原创 2016-02-17 13:35:00 · 91 阅读 · 0 评论 -
NSAttributedString
概述UIKit 在 NSAttributedString 中加入了新的方法,以支持格式化文本的绘制、计算文本在绘制前的大小及空间。这些方法不影响文本的内容,只影响绘制的过程。默认,文本绘制使用本地坐标,内容从某个点向右向下绘制。当你放置文本内容时,记住文本块的左上角就是绘制的起点。你可以在主线程之外使用这些方法,但是,如果是支持NSStringDrawingContext 的任何方法,则无法...原创 2016-02-17 13:30:00 · 141 阅读 · 0 评论 -
NSCharacterSet
举例:NSString * str1 =[nameInput.textstringByTrimmingCharactersInSet:[NSCharacterSetwhitespaceAndNewlineCharacterSet]];NSString * str2 =[passwdInput.textstringByTrimmingCharactersInSet:[NSCharacter...原创 2016-02-17 13:23:00 · 83 阅读 · 0 评论 -
iOS 手势
iOS开发中手势识别有六种:轻击手势(TapGestureRecognizer),轻扫手势 (SwipeGestureRecognizer),长按手势(LongPressGestureRecognizer),拖动手势(PanGestureRecognizer),捏合手势(PinchGestureRecognizer),旋转手势(RotationGestureRecogniz...原创 2016-02-17 13:21:00 · 80 阅读 · 0 评论 -
UINavgationController
UINavigationBar和UINavigationItem是iOS开发中常用的控件。 1.设置导航栏标题self.title = @"iOS开发:iOSDevTip";2.设置导航栏样式设置方法:[self.navigationController.navigationBar setBarStyle:UIBarStyleBlack];UIBarSt...原创 2016-02-17 13:20:00 · 79 阅读 · 0 评论 -
笔记 —— UIControlEvent
UIControlEventTouchDown = 1 << 0, // 手指落在按钮的一瞬间触发UIControlEventTouchDownRepeat = 1 << 1, // 多点触碰的时候,当第二根以上的手指触摸瞬间出发UIControlEventTouchDragInside = 1 <&l...原创 2016-02-17 13:18:00 · 98 阅读 · 0 评论 -
同时使用多个UITableView
同时使用多个UITableView1.xib\storyboard中给2个tableView设置constraints(等宽)方法 :①设置mainTableView的上\下\左\三部分的约束为0;subTableView上\下\右\的约束为0;②同时选中mainTableView和subTableView,设置为等宽和等高; 2.代理和数据源设置mainTableVi...原创 2016-02-17 13:17:00 · 127 阅读 · 0 评论 -
iOS 图片拉伸
作为开发人员,合理利用UI提供的华丽的图片,是开发App过程中不可或缺的。其中圆角图片在我们的需求中是比较常用的,下面就介绍一些关于它的概念。概念:端盖(end cap),用来指定图片中的哪一部分不用拉伸。比如下图中,黑色代表需要被拉伸的矩形区域,上下左右不需要被拉伸的边缘就称为端盖。如图:使用UIImage的这个方法,可以通过设置端盖宽度返回一个经过拉伸处理的UIImage对象:...原创 2016-03-03 16:46:00 · 86 阅读 · 0 评论 -
atomic nonatomic区别
摘要atomic和nonatomic区别用来决定编译器生成的getter和setter是否为原子操作。atomic提供多线程安全,是描述该变量是否支持多线程的同步访问,如果选择了atomic 那么就是说,系统会自动的创建lock锁,锁定变量。nonatomic禁止多线程,变量保护,提高性能。1、atomic:默认是有该属性的,这个属性是为了保证程序在多线程情况下,编译器会自动生成一些互斥加...原创 2016-08-05 18:22:00 · 126 阅读 · 0 评论 -
iOS 使用Instruments的Leaks工具,定位内存泄露的代码
以前写的文章:iOS 使用Instruments的Leaks工具,查找内存泄露具体位置环境Xcode Version 10.2.1 (10E1001)iPhone Version12.1.3使用流程启动暂停红色x表示存在内存泄露的地方。如果查找到了内存泄露,可以点击暂停,进入第4步选择 Leaks > Call Tree勾选双击,即可定位内存泄露代码。按照如上...原创 2019-08-05 18:47:46 · 2959 阅读 · 0 评论