iOS
皓皓儿
走在程序猿道路上
展开
-
iOS中strong和weak的区别
在iOS的开发中,像我一样学习OC的很多初学者会遇到的问题是不能理解strong和weak的区别,也就不知道该在什么时候选择strong或者weak。首先,一句话说明两者的区别。strong持有对象,而weak不持有对象。怎么理解呢? @property (nonatomic, strong) NSString *s1; @property (nonatomic, strong) NSStrin原创 2015-08-27 13:39:09 · 2130 阅读 · 0 评论 -
UITableViewCell以及其子控件自适应高度
项目中有一个需求如下图所示:这是已经的收件箱的cell显示。 另外一种是未读的收件箱的显示,如下图所示:对于未读的信息的显示,最开始考虑的是将前面的小圆点设置成一个UIImageView,然后后面用UILabel显示正文。但是这样有一个问题就是,第二行的文字和第一行是对齐的,并不是从小圆点的正下方开始显示。而且也不想未读和已读自定义两种cell。 所以最终选择了富文本的方式解决这个问题。在完成这原创 2017-06-13 22:05:22 · 598 阅读 · 0 评论 -
iOS 实时监听UITableViewCell中的UItextField的值的变化
项目中有一个需求:每一个UITableViewCell中有一个UItextField,当所有的UItextField输入完成后,点击保存按钮,上传信息。 在这个过程中,只要任意一个cell中的UItextField的输入发生变化,就要得到UItextField中的值,并对当前控制器中的相应属性进行赋值。其中有两个cell是选择国家和省市的,点击这两个cell需要弹出一个控制器,点击相应的选择后,发原创 2017-06-12 10:09:04 · 5120 阅读 · 2 评论 -
iOS 使用AFNetworking传递复杂的POST参数(数组、键值对)
项目要进行一个购物车价格的计算,需要从客户端传递用户购物车中商品的信息,包括ID和数量,同时 涉及到优惠码。 一般我们用AFNetworking传递参数都是使用如下代码:// 取得管理者 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];// 取得连接 NSMutabl原创 2017-04-27 22:04:24 · 9185 阅读 · 1 评论 -
iOS点击“我的”,保持登陆状态
项目中需要,在点击“我的”时,检测用户是都登陆,如果没有登陆,就跳转到登陆、注册页面,否则直接进入我的主页面。 项目采用的是登陆时,返回一个token,所以每次登陆时,我都存储token,然后去判断token是否过期,如果过期就进行重新的登陆,否则直接进入我的主控制器。在点击“我的”这个tabbarItem时,会调用-(BOOL)tabBarController:(UITabBarControll原创 2017-05-09 22:41:45 · 739 阅读 · 0 评论 -
iOS 利用token保持登陆状态
项目里,需要在客户登陆后保持登陆状态。使用的不是存储用户名和密码,每次去模拟登陆。 而是登录时,登陆成功,从服务器接收token,token是服务器生成的一个字符串,唯一标识一个用户,并且会在一段时间后销毁,所以我们很久不登录APP,会要求重新登录。利用一个工具类,进行token的存储、删除和读取。登陆成功进行存储、下一次打开APP进行读取、退出进行删除。如果,有refreshtoken,可以进行原创 2017-05-08 09:29:25 · 6696 阅读 · 0 评论 -
iOS AFNetWorking与线程同步
在iOS开发中,页面的数据并不是通过一个接口进行获取的,有时候需要从服务器的多个接口获取数据,然后进行页面的更行,有时候需要在获取一个接口的数据后,根据得到的数据再获取其他接口的数据。而开源框架AFNetWorking是一个常用的强大的第三方框架,我们可以利用AFNetWorking和GCD结合的方式完成以上两个需求。(1)获取多个接口数据后,创建或者reload UITableview。将网络获取原创 2017-05-15 08:34:44 · 2487 阅读 · 0 评论 -
点击选中cell后改变cell的样式
项目里有一个需求,选中的收货地址和其他的收货地址样式不同 选中之后,要动态的改变cell的样式,并在返回上一个控制器的时候更新显示, 上一个控制器需要更改的显示,如下图所示:之前想通过点击cell触发cell的-(void)layoutSubviews函数,进行子控件frame的改变,没被选中的cell,打钩的UIImageView的frame设置为0,被选中的设置为相应的正常尺寸,其他的控件的原创 2017-04-21 10:49:03 · 1491 阅读 · 0 评论 -
我对知乎上的如何面试一个iOS工程师帖子的一点回答
因为要找工作,在知乎上看了一个帖子,叫做“如何面试iOS工程师”,里面有一些初级问题,我记录下来,一是分享,而是记录,方便复习,如果有不对的,请批评指正,共同进步。问题如下: 1.什么是arc?(arc是为了解决什么问题诞生的?) 2. 请解释以下keywords的区别: assign vs weak, __block vs __weak 3. __block在arc和非arc下含义一原创 2017-03-27 20:13:09 · 1029 阅读 · 0 评论 -
OC浅拷贝和深拷贝
只复制指针成为浅拷贝,复制具有新的内存空间的对象称为深拷贝。简单的说,浅拷贝是多个指针指向同一片内存,每一个指针对这片内存的操作,都会改变内存中的数据。深拷贝是将原来内存区域中的信息拷贝到一片新的内存中,每个指针指向一个独立的内存区域,只是这些内存中的数据(或者说对象)是完全一样的,某个内存中的改变并不会影响其他的内存。深拷贝和浅拷贝的本质指针指向的地址是否相同,地址相同,就是浅拷贝,地址不同就是原创 2016-11-14 10:52:25 · 445 阅读 · 0 评论 -
OC匿名对象
在代码中只关注协议和抽象类,而没有具体的类名的对象成为匿名对象。 关于匿名的对象的说明: (1)没有用指针指向匿名对象; (2)匿名对象的内存分配在堆上,而不再栈上; (3)匿名对象只能使用一次; (4)同一个类的匿名对象,每一次创建都是不一样的 (5)开发中应避免使用匿名对象 下面进行代码说明:#import "People.h"@interface People ()@proper原创 2016-11-13 15:04:08 · 441 阅读 · 0 评论 -
OC __block
块对象可以包含其访问的自动变量的副本,但是这个变量是只读变量,当想要在多个块对象之间共享变量,有三种方法: (1)外部变量; (2)静态变量(static) (3)若是在函数内部需要共享变量,需要将变量用__block修饰注意:__block变量不能和static、auto、register同时指定。下面举例://// test.c// testClassCluster////原创 2016-11-16 10:57:54 · 738 阅读 · 0 评论 -
更新xcode8之后https连接问题
之前一直使用xcode6,这两天跟新了,遇到了很多和大家一样的问题。但是使用大家的方法去解决,却行不通。总结了一下解决https连网的解决办法。 (1)很多人都提出来的,大多数情况下可以解决,就是修改你的info.plist文件。<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.原创 2016-11-10 15:16:00 · 2352 阅读 · 1 评论 -
OC中的类簇
类簇就是具有相同接口,并提供相同功能的一组类的集合。 类簇包括两种类,一种是公共类(指的是仅公开接口的抽象类),二是具体类,这些具体类的接口,由公共类的接口抽象化。具体类不能被直接使用,他们一般是作为公共类的子类进行实现的(也称之为私有子类)实际上,在编码中,公共类和具体类使用方法是一样的。实现某个类的方法并不是一定的。类簇会挑选出某种情况下最好的类去实现。我们以NSString为例来说明:#im原创 2016-11-10 14:58:32 · 615 阅读 · 0 评论 -
OC的可变参数
OC中对数据库进行操作、输出日志的时候,常常要用到可变参数。在定义可变参数函数之前要 (1)引入头文件stdarg.h头文件; (2)用…来表示可变函数参数; (3)获取参数前需要定义一个va_list类型的变量,例如 va_list persons, (4)接下来我们就要取出可变参数:va_start(persons,可变参数前面的一个变量的变量名);......f = va(pe原创 2016-11-09 16:44:50 · 754 阅读 · 0 评论 -
OC中,成员变量和属性区别
在OC中,首先看一下成员变量和属性的声明成员变量的表示如下:#import <Foundation/Foundation.h>@interface animal : NSObject{ @public NSString *name; @public NSString *height;}@end这里的name 和 height 就称之为OC的成员变量。而属性的声明如下:#impo原创 2016-11-09 13:28:15 · 586 阅读 · 0 评论 -
封装好的可设置标题、正文字体的默认样式UIAlertController
iOS8之后,主要使用UIAlertController进行信息的显示,而默认的样式使用的比较多,所以封装了一个,以方便以后使用。调用以下函数即可:-(void)showIntroDuction:(NSString *)title :(NSString *)showText :(NSString *)btnStr :(UIFont *)titleFont :(UIFont *) showTextFo原创 2017-06-14 11:10:05 · 576 阅读 · 0 评论