
iOS 开发
文章平均质量分 63
千古独步
这个作者很懒,什么都没留下…
展开
-
正确使用Block避免Cycle Retain和Crash
Block简介Block作为C语言的扩展,并不是高新技术,和其他语言的闭包或lambda表达式是一回事。需要注意的是由于Objective-C在iOS中不支持GC机制,使用Block必须自己管理内存,而内存管理正是使用Block坑最多的地方,错误的内存管理 要么导致return cycle内存泄漏要么内存被提前释放导致crash。 Block的使用很像函数指针,不过与函数最大的不同是:转载 2017-12-04 22:09:52 · 254 阅读 · 0 评论 -
UI14-UINavigationController和UITabBarController一起使用
开发中常遇到UINavigationController和UITabBarController一起使用的场景在APPDelegate.m中编写代码:- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {原创 2017-08-23 10:17:59 · 450 阅读 · 0 评论 -
UI13-UITabBarController底部导航视图
分别创建PhotoAlbumViewController、ShootViewController、MyViewController三个视图控制器器在AppDelegate中编写代码:- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)laun翻译 2017-08-23 09:27:32 · 297 阅读 · 0 评论 -
UI12-分段视图
//先生成存放标题的数据 NSArray *array = [NSArray arrayWithObjects:@"家具",@"灯饰",@"建材",@"装饰", nil]; //初始化UISegmentedControl UISegmentedControl *segment = [[UISegmentedControl alloc]initWithItems:array翻译 2017-08-22 17:57:06 · 377 阅读 · 0 评论 -
UI18-使用NSJSONSerialization方法解析JSON
使用系统自带的NSJSONSerialization解析JSON数据定义一下属性,我们将返回的JSOB数据一层一层转化@property (nonatomic,copy) NSArray *results;@property (nonatomic,copy) NSDictionary *location;@property (nonatomic,copy原创 2017-09-04 14:57:51 · 256 阅读 · 0 评论 -
UI17-xib文件自定义Cell
新手教程之使用Xib自定义UITableViewCell前言首先:什么是UITableView?看图其次:什么是cell?然后:为什么要自定cell,UITableView不是自带的有cell么?因为在日常开发中,系统自带的cell满足不了客户和开发人员的需求(并且每个cell中的内容\大小\样式相同),我们就需要自定义cell来实现更加优化转载 2017-08-25 16:41:10 · 320 阅读 · 0 评论 -
Ui16-触摸事件与UIResponder
//一根手指或多跟手指触摸屏幕。-(void)touchesBegan:(NSSetUITouch *> *)touches withEvent:(UIEvent *)event;//一根手指或多根手指在屏幕上移动(随着手指的移动,相关的对象会持续发送该消息)-(void)touchesMoved:(NSSetUITouch *> *)touches withEvent翻译 2017-08-25 16:39:30 · 210 阅读 · 0 评论 -
UI15-UIImageView响应点击事件
有时候会遇到点击一张图片,然后让这张图片触发一个事件,或者是跳转视图,想到的第一个方法就是用UIButton,将Button的背景图片属性设置为该图片,效果达到了,但不是最好的方法,直接触发方法定义Image的对象;UIImageView *imgView =[[UIImageViewalloc] initWithFrame:CGRectMake(0,0,320,100转载 2017-08-25 16:30:08 · 231 阅读 · 0 评论 -
OC中的冒泡排序法
#import int main(int argc, const charchar * argv[]) { @autoreleasepool { /* 冒泡排序法的基本思想:(以升序为例)含有n个元素的数组原则上要进行n-1次排序。对于每一躺的排序,从第一个数开始,依次比较前一个数与后一个数的大小。转载 2017-07-27 18:03:40 · 517 阅读 · 0 评论 -
OC语言学习23-Block在类中的应用
创建Mother类和OldWoman类:Mother.h中的代码:#import @interface Mother : NSObject@property(nonatomic,copy)NSString *name;//block作为属性运用@property(nonatomic,copy)void(^actionB翻译 2017-07-25 17:33:14 · 218 阅读 · 0 评论 -
OC语言学习22-Block基本语法
创建工程,在main.h中编写代码:#import //自定义C语言函数void test(){ printf("%s\n",__func__);}int main(int argc,const char * argv[]) { @autoreleasepool { //函数指翻译 2017-07-25 16:46:03 · 244 阅读 · 0 评论 -
UI04-UIImageView图片组件
创建一个工程,在AppDelegate.m中编写代码:#import "AppDelegate.h"#import "ViewController.h"@interface AppDelegate ()@end@implementation AppDelegate- (BOOL)ap转载 2017-08-02 17:22:39 · 298 阅读 · 0 评论 -
UIXX-UITableView制作简单表格
一、创建一个工程,在ViewController.h文件中编写代码:#import //添加两个协议一个是表格视图数据源协议,一个是表格视图代理协议@interface ViewController :UIViewControllerUITableViewDataSource,UITableViewDelegate>@end二、在Vi翻译 2017-08-15 22:50:12 · 950 阅读 · 0 评论 -
iOS UIAlertController代替代替UIAlertView与UIActionSheet
UIAlertController是用来代替之前我们使用的UIAlertView和UIActionSheet,这次的改进总体来讲,感觉思路更清晰简洁了,使用起来也是颇为顺手,下面不多说老样子上代码:#import "ViewController.h" @interface ViewController () @end @implementa转载 2017-09-13 14:48:06 · 875 阅读 · 0 评论 -
iOS 01 - HTTP协议的介绍
HTTP协议请求:发送HTTP请求的方法在HTTP/1.1协议中,定义了GET、POST、HEAD、PUT、DELETE、TARCE、CONNECT、PATCH这8种请求方法,不同方法对资源有不同的操作方式,最常用的是GET、和POSTGET和POST的选择1、如果要传送大量数据,例如文件上传,只能用POST请求2、GET的安转载 2017-09-06 17:50:04 · 307 阅读 · 0 评论 -
iOS UIViewController 和 xib 绑定 详解
原文地址:iOS UIViewController 和 xib 绑定 详解1> 创建 UIViewController,此处不选择 Alse create XIB file2> 创建 xib 文件3> 在 xib 中,点击 Placeholder -> File’s Owner在右边 Show the Identity inspector ,在转载 2017-09-12 16:19:54 · 823 阅读 · 0 评论 -
iOS 05-使用AFNetworking框架创建下载任务
一、使用Cocoapods库管理工具下载AFNetworking框架设置你的Cocoapods先要确保你已经安装了Cocoapods。为此,打开命令行程序,并输入。which pod 你将会看到类似这样的输出:/usr/bin/pod 如果命令行简单的返回提示,或显示pod not found,表示Cocoapods未安装在你的机器上使用一下命令完原创 2017-09-07 16:40:05 · 358 阅读 · 0 评论 -
iOS 10-GCD的常用方式
直接上代码、#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [superviewDidLoad];翻译 2017-09-15 17:26:33 · 277 阅读 · 0 评论 -
iOS 09-GCD多线程基础
一、任务与队列:1、执行任务的方式:用同步的方式执行任务dispatch_sync(dispatch_queue_t queue, dispatch_block_t block);queue: 队列block: 任务用异步的方式执行任务dispatch_async(dispatch_queue_t queue, dispatch_block_t block);同步和翻译 2017-09-15 14:02:20 · 243 阅读 · 0 评论 -
iOS 04-NSSession类库之DataTask代理
@interface ViewController ()NSURLSessionDataDelegate>//创建数据容器,接收返回数据@property (nonatomic,strong) NSMutableData *data;@end-(void)touchesBegan:(NSSetUITouch *> *)touches withEvent:(UIEvent转载 2017-09-07 16:32:43 · 339 阅读 · 0 评论 -
iOS 03-NSURLSession类 GET与POST请求
//使用步骤:/* 1、创建NSURLSession的会话 2、根据会话创建Task 3、执行Task */不废话,直接上代码。-(void)touchesBegan:(NSSetUITouch *> *)touches withEvent:(UIEvent *)event{ [selfpost];}-(void)post转载 2017-09-07 16:24:24 · 290 阅读 · 0 评论 -
iOS 08-线程通信
#import "ViewController.h"#define IMAGE_URL @"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505384144967&di=c99009f5c44b8bca603bd3aef02726d5&imgtype=0&src=http%3A%2F%2Ftup翻译 2017-09-14 15:39:44 · 254 阅读 · 0 评论 -
iOS 07-线程安全 同步锁
#import "ViewController.h"@interface ViewController ()@property (nonatomic,strong) NSThread *th1;@property (nonatomic,strong) NSThread *th2;@property (nonatomic,strong) NSThread翻译 2017-09-14 15:38:32 · 247 阅读 · 0 评论 -
iOS 06-多线程NSThread的使用
1、创建一个按钮- (IBAction)buttonClicked:(id)sender { NSLog(@"main =%@",[NSThreadmainThread]);// [self createThread1]; [selfcreateThread2];// [self createThread3]; }翻译 2017-09-14 15:33:24 · 210 阅读 · 0 评论 -
iOS 02-NSURLConnection的使用
NSURLConnection常用类:NSURL:用于设置请求地址NSURLRequest:用于封装一个请求,保=保存发给服务器的全部数据,包括NSURL对象,请求方式,请求头以及请求体等,默认请求方式是GETNSMutableURLRequest:是NSURLRequest的子类,常用方法有:设置请求超时等待时间:-(void)setTimeoutInterval转载 2017-09-06 17:51:29 · 229 阅读 · 0 评论 -
UI12-导航栏视图控制器的使用
新建工程,创建三个类继承自UIViewController,分别是FirstViewController、SecondViewController 、ThirdViewController一、编写APPDelegate.m文件中代码:#import "AppDelegate.h"#import "FirstViewController.h"@interf转载 2017-08-09 15:55:24 · 264 阅读 · 0 评论 -
UI11-事件传递
创建MainViewController继承自UIViewController,创建SubView、MyWindow 继承自UIView一、在APPDelegate.m中编写代码:#import "AppDelegate.h"#import "MyWindow.h"#import "MainViewController.h"@interface转载 2017-08-09 16:10:07 · 199 阅读 · 0 评论 -
UI02-视图创建
1、打开Xcode创建一个工程,为了纯代码实现,删除多余文件。2、创建一个MainViewController类继承UIViewController3、在AppDelegate.m中编写代码:- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary翻译 2017-07-21 17:16:10 · 341 阅读 · 0 评论 -
UI01-第一个UI程序
打开Xcode创建一个ios工程:以纯代码编写一个视图,删除下面文件在AppDelegate.m文件中编写代码如下:- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {转载 2017-07-21 15:32:52 · 425 阅读 · 0 评论 -
OC语言学习14-JSON数据解析
#import int main(int argc,const char * argv[]) { @autoreleasepool { NSDictionary *jsonDict =@{@"name":@"Tom",@"age":@20}; NSData *data = [NSJSONS翻译 2017-07-20 18:11:19 · 333 阅读 · 0 评论 -
OC语言学习13-Copy和MutableCopy
创建一个工程,编写mian.m代码.#import int main(int argc,const char * argv[]) { @autoreleasepool { //当对不可变对象进行copy,是进行的浅拷贝,仅拷贝该对象的地址 NSString *string =@"string";翻译 2017-07-20 15:05:30 · 176 阅读 · 0 评论 -
OC语言学习12-NSUserDefaults存储数据
创建一个工程,main.m下编写代码;#import int main(int argc,const char * argv[]) { @autoreleasepool { //生成一个单例对象 NSUserDefaults *defaults = [NSUserDefaultsstandardUse翻译 2017-07-20 11:08:12 · 216 阅读 · 0 评论 -
OC语言学习11-pilst文件操作
创建一个工程,在main.m中编写代码:#import int main(int argc,const char * argv[]) { @autoreleasepool { NSArray *array =@[@"one",@"two",@"three"]; //第一个参数是指存储文件的路径翻译 2017-07-20 10:38:20 · 408 阅读 · 0 评论 -
OC语言学习06-字典对象
// NSDictionary//创建不可变字典对象//字典对象中的元素都是键值对//key:value//字典中的元素没有顺序//NSMutableDictionary//创建可变字典对象,继承于NSDictionary;//可以使用所有的不可变字典类中的方法//对于可变字典对象,可以进行添加修改删除操作#imp翻译 2017-07-13 17:59:47 · 236 阅读 · 0 评论 -
OC语言学习05-数组的操作
#import int main(int argc,const char * argv[]) { @autoreleasepool { //数组的添加 NSArray *array1 = [NSArrayarrayWithObjects:@"one",@"two",nil];翻译 2017-07-13 17:58:17 · 351 阅读 · 0 评论 -
OC语言学习04-数组
#import //NSArray 创建不可变数组对象//OC中的数组是对象的有序集合//数组存储的是对象的地址(对象的引用)//不可变数组一旦被创建,不可以继续添加,删除,或者修改//数组中的元素可以为不同类型的对象//数值的访问通过数值的下标访问下标从0开始int main(int argc,const c翻译 2017-07-13 17:52:31 · 220 阅读 · 0 评论 -
OC语言学习03-字符串
//字符串对象 NSString//1.字符串前面加上@//2.打印字符串对象用 %@//3.OC字符串对象每一个字符都是unichar,符合Unicode,使用UTF-8编码存储#import int main(int argc,const char * argv[]) { @autoreleasepo翻译 2017-07-12 17:58:02 · 199 阅读 · 0 评论 -
OC语言学习02-构造方法与类方法
创建一个Book类一 、定义类 Book.h文件#import @interface Book : NSObject { NSString *_name; float _price;}//构造方法,也称为初始化方法;初始化alloc创建的对象,给对象的实例变量赋初值;//带参数的构造方法必须以 in翻译 2017-07-11 17:01:11 · 203 阅读 · 0 评论 -
OC语言学习07-属性生成器
创建一个Person类:定义两个实例变量name和age#import @interface Person : NSObject { NSString *_name; NSUInteger _age;}@property NSString *name;@property NSUInteger age;翻译 2017-07-18 16:12:17 · 2954 阅读 · 0 评论 -
OC语言学习08-属性约束
打开上一次工程目录//1.线程安全相关(原子性)//》atomic(原子操作)默认(会保证线程安全,但是会损失性能)//》nonatomic(非原子操作)//》一般情况下,都是使用nonatomic,可以提高程序的执行效率//2.内存管理相关//》MRC下,retain(强引用)、copy(强引用)、assign(弱引用、赋值、默认)翻译 2017-07-18 17:54:15 · 368 阅读 · 0 评论