QF——网络之知识碎片

时间:2021-08-13 04:24:36

1.URL中文问题:

URL不支持中文。若出现中文,需要对URL进行utf-8编码。

NSString *urlString = [kULRSTRING stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

2.把UIImage转换成二进制数据NSData:

第一行:把png图片转换为二进制数据; 第二行:把jpeg图片转换为二进制数据

  QF——网络之知识碎片

3.NSString和NSData的互相转换:

QF——网络之知识碎片

4.一次性设置所有导航条的背景图片:

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigationbar"] forBarMetrics:UIBarMetricsDefault];

5.一次性关闭所有导航条的半透明:

  [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

等效于被注释掉的部分:

QF——网络之知识碎片

OC只允许单继承,多接口。

通过继承可以获得其他类的属性和方法;通过实现接口可以获得其他类的方法。

既然OC是单继承的,那我怎么获得多个父类的属性??

——————————————————————————————————————————

JSON文档中的数据类型:

“123” ——>NSString

123 ——>NSNumber

null ——>NSNull

——————————————————————————————————————————

nil和NULL的区别:

——————————————————————————————————————————

用xib创建视图,走的是awakeWithNib构造函数;用代码创建的视图,走的是init构造函数。

——————————————————————————————————————————

怎么获得手机的系统版本?

  float version = [[[UIDevice currentDevice] systemVersion] floatValue];

——————————————————————————————————————————

聊天气泡的拉伸:

  俩参数为设置图片的像素位置,使图片在该点拉伸,而不会整体拉伸。

  - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight;

——————————————————————————————————————————

去掉cel的分割线:

  tabView.separatorStyle = UITableViewCellSeparatorStyleNone; 

——————————————————————————————————————————

使cell无点击选中效果:

self.selectionStyle = UITableViewCellSelectionStyleNone;

——————————————————————————————————————————

iOS观察者模式,及应用(通知中心,KVO,Delegate):  http://blog.csdn.net/xdrt81y/article/details/24039163

  当我们对某对象的属性改变敏感时,可以给它注册观察者,当该对象的属性值发生变化时,会通知我们,会自动调用回调函数。

  1.给某对象注册观察者,观察它的某属性; 

——————————————————————————————————————————

根据文本内容,自动计算其尺寸:

- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context

——————————————————————————————————————————

在block外创建的对象,不能在block里直接使用,因为block和主程序执行是异步的,block执行时该对象已被销毁。所以说,,,__block 关键字的本质是拷贝了一份原来对象么???

————————————————————————————————————————————

————————————————————————————————————————————

iPad开发与适配:

  分割视图,需要同时存在两个viewController. 和tabbarViewController很相似,相当于一个容器,里面可以装VC和navC

  webView,也是继承自scrollView。只要能滚动的视图都继承自scrollView,

—————————————————————————————————————————

  根据字符串str,求以它为前缀的字符串。

—————————————————————————————————————————

常见容器视图:

  UITabBarController, UINavigationController(导航控制器), UISplitViewController (分割视图,ipad)

—————————————————————————————————————————

iOS的国际化:http://www.cnblogs.com/qingjoin/p/3899265.html

—————————————————————————————————————————

storyboard,它和xib的区别:

在一个storyboard里可以布局多个界面视图,并且能清晰的体现他们之间的关系结构,而且storyboard能完成界面跳转。

界面跳转:segue

点击进入链接

push,modal,custom三种跳转方式的区别?

—————————————————————————————————————————

代码版本管理工具:svn 和 git

svn:

  第一次取代码:checkout;

  更新代码:updata;

  提交代码:commit。

写完自己的代码,先updata再commit。

http://www.cnblogs.com/ludashi/p/4018245.html

—————————————————————————————————————————

解决键盘遮挡输入框的几种方案:

1.当textfield被点击后弹出键盘,并且使整个view上移键盘的高度。当endediting,隐藏键盘的同时再调低view的高度。

2.利用UIKeyboardDidShowNotification

—————————————————————————————————————————

学生代码管理

http://10.2.100.8/stuproj/1502/[名字拼音]_PocketKitchen.git

—————————————————————————————————————————

id和instancetype的区别:

id是任意类型,类型提升;

instancetype是指生成当前类的类型,是哪个类,就是哪个类型。(若是YWViewController,为什么不写明是YWViewController呢?答案是复制方便。写instancetype是动态实时的获取类型的)

—————————————————————————————————————————
iOS定制控件:

http://www.cocoachina.com/industry/20131104/7287.html?utm_source=tuicool

http://blog.csdn.net/zhanghanming199038/article/details/8755680

—————————————————————————————————————————

模态视图控制器:

—————————————————————————————————————————

以前在做界面中的一条线的方法是通过调整UILabel的宽高来实现的。但更高级的方法是用用绘图API完成。

—————————————————————————————————————————

iOS响应者链

—————————————————————————————————————————

很多时候我们要把从网络解析来的dict装入model,这时我们可以利用KVC的setValuesForKeysWithDictionary:方法来一次性的赋值,很方便,但它的弊端是不太安全,若写错key,则key和model里的属性对应不上,就会报错。这时我们应该重写两个方法。

—————————————————————————————————————————

viewDidLoad方法里一般写:1.初始化一些数据(数组,字典等);2.UI布局;3.加载数据(网络请求或者本地加载)

重写原来的解析器方法,以自定义一个更适合自己的JSON解析器。

AFHTTP,请求网络方法几个步骤,封装成一个方法。是请求网络只需调用这一个方法即可。

网络请求方法GET的返回类型是AFHTTPRequestOperation,但是我们在调用这个GET方法的时候没有使用变量去接收这个返回值。其实这个方法的返回值的主要用于多次中断下载,当你的APP可以一次性下载完时,就不需要它了。若是中间请求网络,下载数据的时候被中断了,下次下载的时候会从这个返回值里取得一些信息。

—————————————————————————————————————————

从服务器获得的日期格式是yyyy-mm-dd形式的。怎么单独获得day呢?

我首先想到的是通过索引起始位置求子串,但这种方法不太可行,若月份天数有可能有时是一位数,有时是两位数的。

然后想到的是字符串的分割方法   NSArray * array = [str componentsSeparatedByString:@"-"];通过-来分割字符串。

—————————————————————————————————————————

imageView里的contentMode = UIViewContentModeScaleAsPectFill

—————————————————————————————————————————

CoreData:映射。数据库表和model属性的映射。

FMDB不支持多线程,所以FMDB官方建议使用DatabaseQuene

MFDB批量更新数据库:http://blog.csdn.net/x32sky/article/details/18965155        

—————————————————————————————————————————

在写单例方法时,加锁可以用@sy... 那种方法,但现在比较流行gcd多线程加锁的方式。

static dispatch_once_t token;

dispatch_once(&token, ^{

_appSupport = [[QFAppSupport alloc] init];

});

—————————————————————————————————————————

iOS 编程实战 最新版 (下载pdf)

—————————————————————————————————————————

present,dismiss和push,pop的区别;

前两者适用于所有的界面,而后两者是导航控制器中的内容,只有该界面是装入导航控制器的,才能用push和pop,它跳转的界面之间是层结构(栈结构);而前两者是跳转的界面是平行的。

—————————————————————————————————————————

cookMenuVC.title = @"菜谱";这样写在tabBar和navBar中都会有title;

cookMenuNavC.tabBarItem.title = @"ca"; 这样写只在tabBar中又title

—————————————————————————————————————————

原子性,非原子性。

—————————————————————————————————————————

iOS7以后默认都有返回滑动手势,在屏幕左边缘向右滑动,就会返回上一层页面(相当于pop)。但是如果自定义了navgationBar的Back按钮,则就关闭了该返回手势,所以,此时我们得手动开启它。

—————————————————————————————————————————

iOS里实现回调的方式:

1.代理

2.block

—————————————————————————————————————————

GCD:

dispatch_async( ) 异步:函数会立即返回,block会异步执行,不阻塞

dispatch_sync( ) 同步:函数会等待执行完毕后再返回,阻塞

GCD中三种队列:主队列,全局队列,自创建队列

串行队列,并发队列

http://blog.csdn.net/springpp1990/article/details/12451913

http://www.cnblogs.com/sell/archive/2013/02/06/2905693.html

—————————————————————————————————————————

APP上线后,经常会升级更新,而且数据库中的表可能会发现变化,所以要做数据库版本的控制。

APP的图标,和启动页

修改APP的名字

——————————————————————————————————————————

Core Animation

CALayer

锚点

给CollectionView添加Header

http://my.oschina.net/zboy/blog/221525

开发证书,推送证书,配置文件。

真机测试

——————————————————————————————————————————

——————————————————————————————————————————

iOS 支付宝开发步骤:

  1.去官网注册合约账号,注册后会有

——————————————————————————————————————————

这两行代码都是在iOS7下修改navigationBar的背景颜色的。

self.navigationController.navigationBar.backgroundColor = [UIColor greenColor];

self.navigationController.navigationBar.barTintColor = [UIColor whiteColor];

——————————————————————————————————————————

设置navigationBar的文字颜色,文字字体,文字阴影等

self.navigationController.navigationBar.titleTextAttributes = @{UITextAttributeTextColor:[UIColor whiteColor]};(会报异常)

self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName:[UIColor whiteColor]};(不会报异常)

更多设置:http://www.41443.com/HTML/iphone/20141221/253422.html

导航条的半透明开关闭到底是哪个?? self.extendedLayoutIncludesOpaqueBars = YES;

——————————————————————————————————————————

用代码实现AutoLayout

VFL语言

但是这些都很繁琐,实际开发中我们一般使用自动布局的第三方库Masonry,用Masonry设置约束

第三方库管理插件

——————————————————————————————————————————

第三方登录:QQ登录

http://blog.sina.com.cn/s/blog_92ac2c5b0101cly9.html

——————————————————————————————————————————

http://blog.csdn.net/totogo2010/article/details/7645693

——————————————————————————————————————————

当自定义的视图不是控制器时,它使没有initWithNibName这个构造方法的,要想初始化xib文件,可以使用

NSArray * arr = [[NSBundle mainBundle] loadNibNamed:@"" owner:self options:nil];

——————————————————————————————————————————

[NSString stringWithUTF8String:object_getClassName(self)] 这行可以判断当前类,所以在base中判断当前类就行了,

——————————————————————————————————————————

把返回结果的处理封装在block里,(把block用typed定义成类型,然后用block作返回处理)。

——————————————————————————————————————————

pch文件,(precompiled header)预编译头文件(放置重复import,重复编译)

xcode6之后,创建项目后不会自动帮我们创建.pch文件了,当我们需要时,要我们自己手动创建。

——————————————————————————————————————————

把解析的dict给model赋值,简便方法是使用KVC,model对象调用setValuesForKeysWithDictionary:

使用KVC需要注意的地方:

1.字段要对应,若字段不对应会奔溃。需要重写forUndefinedKey:方法,若,则不需要为他赋值

——————————————————————————————————————————

回调函数一般有两种方式实现:代理模式和block

对block进行内存管理,要使用copy。

——————————————————————————————————————————

initWithNibName等几个函数的区别:

http://www.cnblogs.com/geraldzhang/archive/2011/09/21/2183970.html

——————————————————————————————————————————

runloop:

——————————————————————————————————————————

  block的生命周期和内存管理  

    http://www.tanhao.me/pieces/310.html/

    http://www.cnblogs.com/tangbinblog/archive/2012/12/31/2840690.html

  初始化时是在栈上,进行copy操作是为了把block从栈上拷贝到堆上使用

  可以使用typedef定义一个block类型,便于后续使用,不过一般情况下我们不用这样,就像系统SDK一样,int (^)(int x, int y) myblock

  在block有时会陷入强引用循环的僵局,造成对象无法被释放的僵局。

  

typedef int(^Myblock) (int, int);

Myblock mb = ^(int x, int y){

};

——————————————————————————————————————————

1.若不是iOS7以上的应用则不通过上线;

2.若不适配iphone6以上,则不通过上线;

3.若应用不支持arm64设备架构,则不通过上线

——————————————————————————————————————————

任务:

  换头像(图片选取器);

  第三方登录:QQ

  第三方分享:在专题详情界面添加分享功能ShareSdk

  第三方支付:

  autolayout 以及Masonry;

  定位与第三方地图接口;(LBS)

  远程推送的原理 (APNs)

  即时通讯(XMPP)

  苹果有关的所有证书。

  第三方类库管理cocopods     http://blog.csdn.net/meegomeego/article/details/24005567

  多线程,runloop

  反射机制

  NSArray和NSMutableArray在内存中的不同 :

    前者在内存中的数据结构是List,它是连续的,分配的内存是固定的;

    后者在内存中的数据结构是链表,它是不连续的。

  isMemberOfClass

  视图响应链

  事件传递机制

  drawRect方法

  iOS数据库,sqlite和CoreData

  第一响应者

  应用上线的操作流程

  代码版本控制:svn和git

  触摸事件的传递:由父视图传向子视图(由下而上)。若父控件不能接收触摸事件,则子控件就不可能接收到触摸事件。

  友盟的社会化分享,第三方登录,第三方推送 

  环信(第三方即时通讯)

 

  

  

QF——网络之知识碎片的更多相关文章

  1. IOS开发基础知识碎片-导航

    1:IOS开发基础知识--碎片1 a:NSString与NSInteger的互换 b:Objective-c中集合里面不能存放基础类型,比如int string float等,只能把它们转化成对象才可 ...

  2. iOS网络相关知识总结

    iOS网络相关知识总结 1.关于请求NSURLRequest? 我们经常讲的GET/POST/PUT等请求是指我们要向服务器发出的NSMutableURLRequest的类型; 我们可以设置Reque ...

  3. iOS网络基础知识

    iOS网络基础知识 1.一次HTTP请求的完整过程 (1)浏览器或应用发起Http请求,请求包含Http请求Http(请求),地址(url),协议(Http1.1)请求为头部 (2)web服务器接收到 ...

  4. 网络基础知识、ASP.NET 核心知识(1)*

    为什么要写网络? 我原本的计划是这样的,连续两天梳理ASP.NET开发的核心知识.说到这呢,有人问了.“不是说好了做ASP.NET笔记吗?为啥要写网络基础知识?是不是傻?” 原因是这样的.作为网站开发 ...

  5. Java 网络编程(一) 网络基础知识

    链接地址:http://www.cnblogs.com/mengdd/archive/2013/03/09/2951826.html 网络基础知识 网络编程的目的:直接或间接地通过网络协议与其他计算机 ...

  6. LINUX涉及网络相关知识

    才接触到网络的老铁,是否比较晕呢? 简单记录一下网络相关知识吧(IPV4)! A0. 网络号.主机号 A1.网络地址分类: A2. 保留地址: A3. 子网掩码作用:(子网掩码.IPV4地址做“与”运 ...

  7. Linux运维笔记(一)网络基础知识

    网络基础知识 一.基本概念 1.ARPANET & TCP/IP:以“软件”技术将网络硬件整合,使得不同的计算机或者数据可以通过这个软件达成数据沟通(TCP/IP技术也被称为Internet) ...

  8. TCP/IP协议(一)网络基础知识

    参考书籍为<图解tcp/ip>-第五版.这篇随笔,主要内容还是TCP/IP所必备的基础知识,包括计算机与网络发展的历史及标准化过程(简述).OSI参考模型.网络概念的本质.网络构建的设备等 ...

  9. IOS开发基础知识--碎片13

    1:运行程序报the file couldn't be opened because you don't have permission to view it 解决办法:项目—>targets- ...

随机推荐

  1. &period;NET 基础 一步步 一幕幕 &lbrack;&period;NET 系列预热&rsqb;

    .NET 系列预热 .NET : 一般指.Net Framework框架.一种平台,一种技术. .NET 下的编程语言有C#,F#,VB:在这里我们主要讲述的C#. .NET 一般都能干什么呢? l  ...

  2. 【经验之谈】Windows环境下配置WordPress

    前言 wordpress全球著名的开放博客平台,拥有成千上万个各式插件和不计其数的主题模板样式,使用php和mysql搭建,下面说下载windows环境下配置wordpress,经验之谈. 安装 关于 ...

  3. PS要点

    1.通道 意味着我们同过不同的角度来看图像,可以得到不同的图像信息,PS是以灰度图像来表现这种信息的强弱. 我们能看到什么取决于我们的视角.任何灰度图像都可以按照不同的规则来构成彩色图像. 通道除了能 ...

  4. HDU 1869 六度分离【floyd】

    题意:给出n个人,m个关系,问是否满足任意两个人之间的距离通过6个人就可以连接 用floyd就可以了,注意距离是大于7 #include<iostream> #include<cst ...

  5. 在js中获取easyui datagrid的数据

    可以在页面对datagrid的数据直接进行修改,然后提交到数据库,但是要求在提交前获取datagrid的所有行的数据.API提供了getData方法,但是怎么用了,没说. 最后这样写才搞定 var a ...

  6. session 共享

    目前大多数大型网站的服务器都采用了分布式的部署方式,但是session是在服务器端保存的,如果用户跳转到其他服务器的话,session就会丢失,于是就有了分布式系统的session共享问题. sess ...

  7. jQuery -&amp&semi;gt&semi; 获取各种滤芯&lpar;filter&rpar;

    按顺序选择 依次选择过滤器(filter)有着 :first 第一元件 :last 最后一个元素 :even 序号为偶数的元素 :odd 序号为奇数的元素 :eq(n) 序号等于n的元素 :lt(n) ...

  8. ORA-12516&colon; TNS&colon; 监听程序找不到符合协议堆栈要求的可用处理程”的异常

    简单说明:我们开发时多人开发,会频繁访问服务器数据库,结果当连接数大的时候,就会报ora-12516的错误,ORA-12516: TNS: 监听程序找不到符合协议堆栈要求的可用处理程"的异常 ...

  9. Android平台上的Aplay与TinyAlsa移植使用

    ALSA是高级Linux声音架构.提供了一系列音频的逻辑接口,包括PCM.CONTROL等.这些,不影响它的使用,了解一下就可以. 在Android设备上,linux 2.x的版本,要控制录制播放音频 ...

  10. python-day2列表、元祖、字典;编码;字符串

    @导入模块时,会先搜索目前路径的同名py文件,再去全局环境变量找 @看模块的环境变量 import sys print(sys.path) @site-package存放第三方库,可以把自己建的拷贝在 ...