Objective-c
YiShiChangAnLuan
并没有什么好写的啊
展开
-
#pragma mark 基本使用
在objective-c中定义多个类之后,会难以找到类的代码#pragma mark 使用这种代码可以在导航栏的文件栏查看到这一点第一种#pragma mark -可出现一个隔断直线 - 第二种#pragma mark code - 第三种#pragma mark - code -原创 2018-01-31 11:14:43 · 4368 阅读 · 0 评论 -
多对象内存管理
当A对象想使用B对象一定要对B对象进行一次retain,这样才能保证A对象存在B对象也存在,也就是说这样才能保证无论在什么时候在A对象中都可以使用B对象 当A对象释放的时候,一定要对B对应进行一次release,这样才能保证A对象释放了,B对象也会随之释放,避免内存泄漏有增就有减A对象中//setter- (void)setBClass:(BClass *)bclass...原创 2018-02-07 22:49:57 · 152 阅读 · 0 评论 -
@class
作用:可以简单的引用一个类简单使用: @class className;仅仅是告诉编译器:className只是一个类;并不会包含这个类的所有内容具体使用 在.h文件中使用@class引用一个类在.m文件中使用#import包含这个类的.h文件 第一种应用场景如果都在.h中import,假如A拷贝了B,B拷贝了C,C被修改,那么B和A都需要重新拷贝如果在.h中使用@...原创 2018-02-08 00:34:43 · 187 阅读 · 0 评论 -
自定义构造方法
自定义一个init方法一定是一个对象方法一定返回id或者instancetype方法名称一定以init开头 - (instancetype)initWithInfo:(NSString *)info{ //先初始化父类 if(self = [super init]) { _info = info; } return se...原创 2018-02-08 01:08:07 · 353 阅读 · 0 评论 -
autorelease
调用autorelease会给对象发送一个消息,将对象放在自动释放池中,当自动释放池被销毁时,会对池子里面的所有对象做一次release操作autorelease会返回对象本身ClassName *p = [ClassName alloc] init];p = [p autorelease];调用autorelease方法后,对象的计数器不变原理 实际上只是把releas...原创 2018-02-08 01:23:18 · 192 阅读 · 0 评论 -
@property和@synthesize
@property在xcode4.4以前,编译器只要看到@property,就知道我们要生成某一个属性的getter/setter方法的声明 在4.4以后对@property进行增强,以后只要利用一个@property就可以同时生成setter/getter方法声明和实现,不必写@synthesize没有告诉@property要传入的参数赋值给谁,默认@property会将传入的值赋...原创 2018-02-08 01:38:08 · 189 阅读 · 0 评论 -
Category和Class Extension
Category是OC特有的语法作用可以在不修改原来类的基础上,为这个类扩充一些方法一个庞大的类可以分模块开发一个庞大的类可以由多个人来编写,更利于团队合作格式//CategoryName:分类的名称@interface ClassName(CategoryName)//NewMethod:新加的方法NewMethod;//不允许在类别中添加变量//声...原创 2018-02-08 02:18:39 · 241 阅读 · 0 评论 -
protocol协议
作用:声明一些方法定义@protocol 协议名称//方法声明列表@end类遵守协议一个类可以遵守一个或者过个协议 任何类只要遵守了protocol,就相当于拥有了protocol的所有方法声明@interface 类名 : 父类 <协议名称1,协议名称2,...>@end和继承的区别继承之后就默认实现,protocol只有声明pro...原创 2018-02-08 14:21:10 · 236 阅读 · 0 评论 -
常见的结构体
NSPoint和CGPoint两者同义typedef CGPoint NSPoint;//CGPoint的定义struct CGPoint{ CGFloat x; CGFloat y;};typedef struct CGPoint CGPoint;typedef Float CGFloat;CGPoint代表二维平面中的一个点//创建CGPoint...原创 2018-02-17 14:23:03 · 183 阅读 · 0 评论 -
NSDate和NSCalendar
创建时间对象,以当前时间为标准//1.创建时间对象,以当前时间为标准NSDate *now = [NSDate date];在该时间基础上加上10s//2.在该时间基础上加上10snow = [now dateByAddingTimeInterval:10];获取当前时区//3.获取当前时区NSTimeZone *zone = [NSTimeZone ...原创 2018-02-17 15:22:52 · 173 阅读 · 0 评论 -
NSFileManager
可以用来进行常见的文件\文件夹操作[NSFileManager defaultManager]使用该方法创建出来的东西是单例1.判断一个文件或者是文件夹是否存在BOOL flag1 = [manager fileExistsAtPath:@"/Users/y1shichanganluan/Desktop/music"];NSLog(@"1. flag1 = %i", fl...原创 2018-02-21 15:11:41 · 146 阅读 · 0 评论 -
单例设计模式以及单例宏抽取
什么是单例 一个类只允许有一个实例,在整个程序中需要多次使用,共享同一份资源的时候,就可以创建单例,一般封装成工具类使用,苹果封装成单例常用的什么情况下使用单例类只能有一个实例,并且必须从一个为人熟知的访问点对其进行访问,比如类工厂方法这个唯一的实例只能通过子类化进行扩展,而且扩展的对象不会破坏客户端的代码设计要点某个类只有一个实例必须自行创建这个对象必须自行向整个系统提供这...原创 2018-02-26 20:04:45 · 145 阅读 · 0 评论 -
NSDictionary
创建单个创建NSDictionary *dict = [NSDictionary dictionaryWithObjects:(NSArray *) forKeys:(NSArray<id<NSCopying>> *)];多个创建NSDictionary *dict = [NSDictionary dictionaryWithObjects:...原创 2018-02-09 12:05:18 · 2103 阅读 · 0 评论 -
NSArray
使用注意只能存放任意OC对象,有顺序是不可变的,一旦初始化完毕,内容固定,不能删除里面的元素,也不能添加 - 创建方式NSArray *arr1 = [NSArray arrayWithObject:@"lalal"];//nil是结束符号,也可以保存对象NSArray *arr2 = [NSArray arrayWithObjects:@"lalal", @"...原创 2018-02-09 02:13:25 · 326 阅读 · 0 评论 -
objective-c 项目模版修改
修改命令行模版在Finder中找到xcode,显示包内容 TemplateInfo.plist中修改即可修改模版内容 修改文件开始注释内容原创 2018-02-01 11:33:00 · 185 阅读 · 0 评论 -
getter-setter方法 和 自定义代码块
在类中需要定义些方法来来操作成员变量getter-setter方法就不用去想方法的名称了,并且,getter和setter的格式和写法都是固定的,而且还是程序员之间的一种规范,降低了程序员沟通成本setter方法作用:设置成员变量的值写法: setter方法一定是对象方法一定以set开头,并且set后面跟上需要设置的成员变量的名称去掉下划线,并且首字母大写一定没有原创 2018-02-01 13:41:39 · 727 阅读 · 0 评论 -
动态数据类型
静态数据类型特点:在编译时就知道变量的类型知道变量中有哪些属性和方法在编译的时候就可以访问这些属性和方法通过静态数据类型定义变量,如果访问了不属于静态数据类型的属性和方法,那么编译器就会报错动态数据类型在编译的时候编译器不知道数据的真实类型,只有在运行的时候才知道数据的真实类型如果通过动态数据类型定义的变量,如果访问了不属于动态数据类型的属性和方法,编译器不会报错原创 2018-02-01 19:09:00 · 2374 阅读 · 0 评论 -
init构造方法以及id和instancetype的区别
在OC中init开头的方法用途:用于初始化一个对象,让某个对象已创建出来就拥有某些属性和值init继承与NSObject,自定义初始化方法,就是将init方法重写,在init方法中初始化成员变量注意:必须先初始化父类,再初始化子类必须先判断父类是否初始化成功,只有父类初始化成功才能继续初始化子类返回当前对象的地址 - (instancetype)init{原创 2018-02-01 22:47:17 · 1512 阅读 · 0 评论 -
description方法
%@是用来打印对象,%@的本质是用来打印字符串 只要利用%@打印某个对象,系统内部默认就会调用父类的description方法 调用该方法,该方法就会返回一个字符串,字符串的默认格式可以重写description方法,返回我们需要打印的内容 只要使用%@打印对象,就会调用description- (NSString *)description{ return [NSS原创 2018-02-01 23:07:34 · 177 阅读 · 0 评论 -
自定义类工厂方法
类工厂方法用于快速创建对象的类方法,我们称之为类工厂方法 类工厂方法中主要用于给对象分配储存空间和初始化这块储存空间规范:一定是类方法方法名称以类的名称开头,首字母小写一定有返回值,返回值是id/instancetype自定义类工厂是苹果的一个规范,一般情况下,我们会提供自定义构造方法和自定义类工厂方法用于一个对象+ (instancetype)ClassNa原创 2018-02-02 14:22:11 · 543 阅读 · 0 评论 -
objective-c 类
类的声明@interface开头@end 结尾类名的首字母必须 大写 声明类的目的就是为了告诉系统,类的属性和行为 oc类声明属性只能写在 { } 中 注意编写oc类属性时,将所有属性的名称前面加_ 类名后面的NSObject为了让类具备创建对象的能力@interface ClassName : NSObject{ code;}@end类原创 2018-01-30 16:01:24 · 148 阅读 · 0 评论 -
SEL类型
作用SEL类型的第一个作用,配合对象/类来检查对象/类中有没有实现某一个方法//声明SEL类型SEL sel = @selector(funName);ClassName *p = [[ClassName alloc] init];//判断p对象中有没有实现-号开头的方法//如果p对象实现了ClassName方法那么就会返回YES//如果p对象没有实现ClassName方原创 2018-02-02 18:02:27 · 280 阅读 · 0 评论 -
Block
Block是一种比较特殊的苹果官方推荐使用的数据类型,应用场景广泛动画多线程集合遍历网络请求回调 作用:用来保存某一段代码,可以在恰当的时候取出来调用,功能类似于函数格式返回值类型 (^block变量名)(形参列表) = ^{};//声明Block变量,type (^BlockName) (type, type);BlockName = ^(type na...原创 2018-02-08 03:01:33 · 119 阅读 · 0 评论 -
NSString
NSString创建方法通过字符串常量创建:存储在字符串常量区,如果创建多个字符串常量,且内容一致,那么多个对象会指向同一块存储空间NSString *str1 = @"作者是个大帅逼";通过alloc init创建:存储在堆区NSString *str2 = [[NSString alloc] initWithFormat:@"作者是个大帅逼"];通过类工厂方法创建:存储在堆区...原创 2018-02-08 22:58:24 · 284 阅读 · 0 评论 -
Copy
copy:创建的是不可变副本,需要遵守NSCopying协议mutableCopy:创建的是可变副本,需要遵守NSMutableCopying协议拷贝对象中的内容会和以前的对象中的内容一致 一般情况下拷贝会生成一个新的对象NSString *str = @"dashuabi";NSMutableString *copy = [str mutableCopy];NSLog(...原创 2018-02-21 16:16:34 · 203 阅读 · 0 评论