自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(123)
  • 收藏
  • 关注

原创 OC-UI-007.imageNamed、imageWithContentsOfFile、imageWithData区别

1.imageNamed[UIImage imageNamed:@"图片名称"];好处:这个方法在图片很少或者图片很小的时候可以这么用。重复利用很高的时候用。它把图片加载在缓存区里面,读取的速度快。坏处:在处理很多,很大的图片时千万不要使用,因为它把这些图片储存在缓存里面,非常消耗内存,很难处理释放图像的内存。会造成内存泄露。2.imageWithContentsOfFil

2015-12-22 15:15:44 657

原创 OC-UI-006.NSBundle类 用于查找应用的文件夹位置

// NSBundle 应用所在的文件夹// 获取某文件的全路径 NSString *path = [[NSBundle mainBundle] pathForResource:@"文件名" ofType:@"扩展名"]; NSLog(@"%@",path);// 只要是方法名称后面是File那么要路径就是全路径(绝对路径)

2015-12-22 11:28:05 440

原创 OC-UI-005.transform属性,用于平移,放大,旋转

平移:1.self.Btn.transform = CGAffineTransformMakeTranslation(10, 0); 这个函数只能使用一次,它的参照位置是一直保持原来的位置。2.self.Btn.transform =CGAffineTransformTranslate(self.Btn.transform, x, y); 这个函数可以根据变化,自动变化参照,能够一直使

2015-12-22 11:19:18 693

原创 OC-UI-004.纯代码编写按钮的简单方法

通过加载view的时候写入代码,进行控件编写#import "ViewController.h"@interface ViewController ()@end@implementation ViewController////view加载完毕就会调用这个方法- (void)viewDidLoad { [super viewDidLoad]; //必须要让父类调用这个方

2015-12-22 11:08:45 1146 1

原创 OC-UI-003.开始简单的动画效果,2种方式

第一种:根据代码,自己逐步设置[UIView beginAnimations:nil context:nil];//加入动画效果[UIView setAnimationDuration:2.0];//动画持续时间self.headBtn.frame = rect;//输入变化的内容————————————这一行注意放的越后面执行的动画越多[UIView commitAnimations]

2015-12-22 11:05:24 411

原创 OC-UI-002.按钮的属性frame、bounds、center

frame:根据父类的view的(0,0)坐标作为参照,平移和改变大小都是参照父类的坐标bounds:根据自身的(0,0)坐标为参照,改变大小是从自己的中心点放大。center:根据父类的(0,0)坐标作为参照的中心点。

2015-12-22 11:02:52 388

原创 OC-UI-001.退出键盘的两种方式

1. [self.object  resignFirstResponder]   谁响应,谁关闭 2.[ self.view  endEditing:YES] 通过父类的控件关闭,可以强制关闭键盘

2015-12-22 10:55:34 426

原创 OC-058.copy和MutableCopy 复制的引用计数

1.英文字符串在OC中的引用计数是特殊处理的,不计算引用计数(除中文或者特殊符号外)NSString *str = [NSString stringWithFormat:@"hello"];NSLog(@"%zd",[str retainCount]); 打印-11.1中文和特殊符号创建NSString还是有引用计数的//中文或者特殊符号会产生引用计数NSString *str = [

2015-12-18 11:24:55 400

原创 OC-057.copy和MutableCopy的使用

OC中的复制分为以下2中:1、浅复制:不会产生一个新的对象的复制 指针拷贝2、深复制:会产生一个全新的对象 内容拷贝copy和MutableCopy返回的副本对象:copy创建的副本返回的是一个不可变的副本MutableCopy返回的是可变的复制的目的:就改变复制对象不会影响原对象,对所有的不可变的对象进行copy操作都是浅复制对所有的不可变的对象进

2015-12-18 11:19:00 354

原创 OC-056.isKindOfClass和isMemberOfClass的区别

isKindOfClass来确定一个对象是否是本类或者其子类的对象if ([[NSMutableArray array] isKindOfClass:[NSArray class]]) { NSLog(@"yes");//打印yes }isMemberOfClass只能确定一个对象是否是当前类的成员if ([[NSMutable

2015-12-17 15:10:06 277

原创 OC-055.NSData类

概念: IOS中二进制文件使用NSData保存音频、视频文件必须使用NSData来保存1.读取文件//1.通过读取文件内容创建 NSData *data = [NSData dataWithContentsOfFile:@"/Users/mrlong/desktop/pic.jpg"];//通过文件地址读取2.把数据写入文件BOOL isOk = [d

2015-12-17 14:34:28 296

原创 OC-054.文件管理器 NSFileManager类

NSFileManager类 :是一个用于管理文件的类。下面代码介绍了创建和一些它的方法:#import //NSFileManager是一个单例对象类int main(int argc, const char * argv[]) { @autoreleasepool { //1.获取NSFileManager单例对象, default:系统默认值

2015-12-17 14:02:04 659

原创 OC-053.NSDate类、NSDateFomatter类、NSCalendar类、NSDateComponents类---ios时间类

太官方的解释我不写了,我就按我目前自己的理解;NSDate类是一个绝对的时间。它就是一个时间点,它是进行日历计算的基础。//******1.创建一个当前时间:是一个格林威治标准时间,本初子午线穿过的地方,经度为0的地方 NSDate *date = [NSDate date]; NSLog(@"%@",date);//打印 0时区的时间//

2015-12-16 20:24:44 427

原创 OC-052.NSValue 结构体类型的包装类

OC中集合类中只能存储OC对象不能存储基本数据类型和结构体存储结构体:结构体 -> 包装类型(NSValue) -> 存入集合类取出结构体:从集合中取出包装类型 -> 包装类型(NSValue) -> 结构体创建和提取的方法:#import int main(int argc, const char * argv[]) { @autoreleasepoo

2015-12-16 16:33:51 396

原创 OC-051.NSNumber 基本数据的包装类

OC中集合类中只能存储OC对象不能存储基本数据类型,所以需要把基本数据类型进行包装起来,在放入集合类中。1.存入集合类:基本数据类型 -> 包装类型(NSNumber) -> 存入集合类2.取出集合类:从集合中取出包装类型 -> 包装类型(NSNumber) -> 基本数据类型如何去创建一个NSNumber类对象:#import int main(int

2015-12-16 12:48:49 282

原创 OC-050.常用的结构体

1.NSRange   区间、范围NSRange range = {1,2}; range.location = 2; //location:开始的位置 range.length =3; //length:长度 NSLog(@"%@",NSStringFromRange(range));2.NSPoint/CGPoint:坐标、

2015-12-16 12:35:24 226

原创 OC-049.集合中的内存管理(MRC和ARC)

1.MRC中,集合的内存管理·当你添加一个对象到集合,集合就会对这个对象进行一次retain的操作·当你从集合中删除一个对象的时候,集合就会对这个对象进行一次release的操作·当集合销毁的时候,会对集合中所有的元素进行一次release操作#import //------main.m#import "LSMe.h"int main(int argc, const cha

2015-12-15 16:35:41 312

原创 OC-048.NSMutableDictionary可变字典

在字典中所有key(键)都是唯一的值没有要求,可以重复NSMutableDictionary:是NSDictionary的子类,它是可变的字典,它支持增删除改的操作代码介绍:1.可变字典的创建2.可变字典的增加、删除、修改#import int main(int argc, const char * argv[]) { @autoreleasepool {

2015-12-15 15:24:10 288

原创 OC-047.NSDictionary字典

概念:字典是一个无序的集合,它使通过键值对的方式来存储数据的key:键 value:值key是有要求  NSCopying才能成为字典key,一般情况都是使用字符串NSString作为字典的keyNSDictionary 不可变得字典,一经创建里面的元素就不可以改变了代码介绍:1.字典的创建和初始化2.字典的一些方法3.遍历字典4.字典与文件 一般用

2015-12-15 15:19:18 306

原创 OC-046.NSArray和NSSet的区别

相同点:1.NSSet和NSArray功能性质一样,用于存储对象,属于集合类;2.NSSet,NSArray都是类,只能添加cocoa对象,如果需要加入基本数据类型(int,float,BOOL,double等),需要将数据封装成NSNumber类型。不同点:1.NSSet、NSMutableSet类是一个无序的集合,在内存中存储方式是不连续的2.NSArray,NSD

2015-12-15 11:59:45 379

原创 OC-045.NSSet类和NSMutableSet类

NSSet是一个集合类,是储存对象的数组。NSSet的特征:1.内部的元素是无序的2.元素不可以重复,会自动去重3.执行的效率比NSArray高NSMutableSet的特征:1.可以增删,没有改以下代码中介绍:1.创建和初始化2.它们的一些基本方法1.NSSet创建和初始化//1.1类方法创建,以nil结尾,表示数组结束

2015-12-15 11:33:15 314

原创 OC-044.可变数组NSMutableArray

1.可变数组创建 //1.1通过类方法 aray的方法创建 NSMutableArray *array1 = [NSMutableArray array]; //1.2可变数组不能通过字面量直接创建// NSMutableArray *array1 = @[@1,@2,@3]; //1.2.1可以通过点语法 sett

2015-12-15 10:39:33 311

原创 OC-043.数组与文件、URL

数组写入文件和URL跟NSString基本一致,直接看代码。#import int main(int argc, const char * argv[]) { @autoreleasepool {//******1.数组与文件 //1.1写入文件,一般使用plist格式,@10是数据类型的包装类NSNumber NSArray *array =@[

2015-12-14 16:07:08 232

原创 OC-042.数组与字符串之间的转换

1.字符串转数组 NSString *str = @"tom,jack,lucy"; //1.通过字符串来分割原来的字符串来组成一个数组 component:组成 Separated:分开 NSArray *array = [str componentsSeparatedByString:@","]; NSLog(@"%@",array);

2015-12-14 15:54:23 2450

原创 OC-041.NSArray的数组排序

排序一般分3种方法:1.通过选择器selector(比较方法写在对象方法内部,比较整洁,常用)2.通过比较器,block封装代码(跟选择器类似)3.通过属性描述器(只能用于基本数据类型和字符串,有局限性,不常用)方法名由(sortedArray)开头#import //------main.m#import "LSDog.h"int main(int argc, const

2015-12-14 15:30:13 251

原创 OC-040.NSArray的遍历方式

遍历方式一般分为以下4种:1.通过for循环2.通过增强for3.通过block封装代码4.通过枚举器让数组里面的对象都执行相同方法(类似for循环,但是效率要高于for):1.[Objest makeObjectsPerformSelector:(nonnull SEL) ];第一种方法是无参数的2.[Objest makeObjectsPerform

2015-12-14 15:14:29 250

原创 OC-039.NSArray对象数组

NSArray是一个可以存放对象的数组类,虽然可以存储不同类的对象,但是一般只存放同类的对象,方便批量操作。1.NSArray的创建2.NSarray的一些简单的方法#import //------main.m#import "LSMe.h"#import "LSYou.h"int main(int argc, const char * argv[]) { @autore

2015-12-14 15:08:44 420

原创 OC-038.可变字符串NSMutableString创建和方法

可变字符串NSMutableString是可以变化的字符串,它不像NSString那样每次都需要赋值给新的对象。1.可变字符串的创建 //可变字符串是自身变化,返回值是void,不用在返回给其他的对象//********1.可变字符串的创建 //1.1不能通过字面量创建,因为它是一个常量,不能改变// NSMutableString *str = @"龙叔

2015-12-14 12:10:14 295

原创 OC-037.NSString字符串的常用方法介绍

1.字符串的创建方法//********1.字符串的创建方法 //1.1通过字面量, NSString *str = @"hello baby"; NSLog(@"%@",str); //1.2通过类方法 NSString *str2 = [NSString stringWithFormat:@"我今年%d岁",2

2015-12-13 13:12:45 384

原创 OC-036.协议的用法,代理模式delegate的设计思路

OC中请一点要面对抽象,不要面对具体。delegate代理模式使用场景:(其实是一种设计程序的模式或者想法,通过协议完成一种多态的特性,让代码更加抽象)1、当A类对象发生什么事想通知B类型对象 (B类对象成为A类对象的代理)2、A类中有些事情,自己无法处理,需要B类对象帮助其处理 (B类对象成为A类对象的代理)3、B类对象向知道A类对象中发生的事情 (B类对象成为A类对象的代理

2015-12-13 12:23:59 251

原创 OC-035.协议

协议:对象之间一种约定只有方法声明没有方法实现一种类型定义一个协议:1.@protocol 协议名称 开头2.@end 结尾@required 表示遵守这个协议的类必须实现方法(默认) 翻译:需要@optional 表示可选的,遵守这个协议的类可以不实现的方法 翻译:可选让类遵守协议@interface 类名 : NSObject 一个类可以遵守多

2015-12-12 16:39:26 178

原创 OC-034.block类型(封装代码)

block 是一种数据类型,它的作用是封装代码。函数不能在方法内部或函数内部,但是block可以定义block类型的变量的格式返回值类型 (^block变量名称)(形参列表);实现格式^ 返回值类型 (形参列表){ 语句..... };在block 中可以访问局部变量的,只能读取,默认不能修改。默认在block内部不能修改局部变量的值如果想修改局部变

2015-12-12 15:26:56 286

原创 OC-033.SEL类型

SEL是一种数据类型,代表方法签名,通过它就找到这个对象上方法SEL和id都是一种结构体类型指针1、定义变量 SEL 变量名称2、通过@selector(方法名称) 快速生成一个SEL,(selector:选择器的意思,选择使用哪个方法)3、可以作为方法的实参4、可以作为方法的形参5、可以作为方法返回值使用场景:可以用来做一个通知,通知某个对象去执行某个方法,在

2015-12-12 14:27:57 214

原创 OC-032.MRC和ARC之间的转换和共存

MRC转ARC步骤:点击Edit->Convert->To Objective-C ARCARC与MRC共存:在目标标签页选择Build phases下的compile sources查看编译顺序表,选中需要MRC的那个.m文件,在compiler flags(编译器标示),输入-fno-objc-arc.

2015-12-12 13:32:52 331

原创 OC-031.类扩展

类扩展:为类增加私有的属性和方法,只能在类内部调用,外部不能使用。(一般情况下直接在.m文件中写,不再另建.h文件)命名规范 interface 扩展类名 ()如何增加一个分类操作步骤:右键点击New File->Objective-C.File->第一行输入名称,第二行选择Extension,第三行选择需要扩展的类名。#import //------main//类扩展:一般情况下直

2015-12-12 11:13:40 186

原创 OC-030.分类(类别)

分类(类别)作用:扩展已有类的功能1、分类是原来的类增加方法-----仅仅增加方法而已2、在方法内部可以访问原有类的成员变量(定义.h头文件中)如何增加一个分类操作步骤:右键点击New File->Objective-C.File->第一行输入名称,第二行选择Category,第三行选择需要扩展的类名。注意点:1、分类中不能扩展原有类的成员变量2、@property

2015-12-11 16:08:42 246

原创 0C-029.ARC中的@property

ARC和MRC中的@property就只有两点不同:1.一般指向对象的时候用:strong这个关键字,不在使用retain2.当循环引用出现的时候,其中一环使用weak关键字,不使用assign#import //-----LSPerson.h#import "LSCar.h"@interface LSPerson : NSObject/* strong 对于普通对象 c

2015-12-11 14:19:56 188

原创 OC-028.ARC自动内存管理的自动释放池

ARC automatic Reference Counting 自动引用计数ARC的自动释放池进行内存的管理比MRC要简单许多,编译器会帮程序员在适当的时候自动添加内存的管理代码。那么ARC中是通过什么来确认对象是否需要释放?ARC中是判断对象是否被强指针指向,来进行判断的。1.强指针:默认所有的指针都是强指针只要是有强指针指向一个对象,那么这个对象就不会

2015-12-11 13:55:40 315

原创 OC-027.手动内存管理中的自动释放池@autorelease

@autorelease的作用:延长对象生命周期把对象放到离自己最近那个自动释放池中当自动释放池销毁的时候,它会把放在其中所有对象进行一次release的操作它和对象在哪里创建没有关系自动释放池的原理:1、系统中存在一个自动释放池栈, 当遇到 @autoreleasepool { 把这个自动释放池压入栈中2、但遇到与之对应 } 自动释放池,出栈,它出栈的时候,会对池中所有对

2015-12-11 13:03:48 295

原创 OC-026.内存管理中循环引用的问题

内存管理中有一个循环引用的问题出现,虽然代码看似没有任何内存问题,但是由于互相引用,而造成了内存泄露。没能正确的回收内存。所以解决的办法是在一个完成的循环体内其中一个对象中,让其不加入内存管理代码,来破坏相互引用的问题。在循环引用中,需要用到@class 来告诉编译器有这个类,不要再用#import,防止循环导入#import //------main#import "LSPerso

2015-12-10 16:08:38 356

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除