01 2016 档案
摘要:定义: 一般情况下,当前协议属于谁就把协议定义到他的h文件中命名: 以所属类开头后面加protocol或delegate方法名:以协议名protocol前的类名加上方法名传参:参数一般为触发协议的对象代理名:一般使用delegate一个类要成为另一个类代理时 在h文件中使用“@protocol 协...
阅读全文
摘要:1category只能添加方法,不能添加属性2 使用@property只会生成get/set方法,不会生成私有成员变量3 分类可以访问原有类中的属性4 分类中有同名方法不会报错,分类方法会覆盖原有类方法。调用顺序:分类、本类、父类5 多个分类中有同名方法会调用最后编译的那个(不要这样用)
阅读全文
摘要:定义变量格式: 返回类型 (^变量名)(数据类型...)=^(参数列表){....};在block内部访问变量(可以理解为传值) 可以访问,但是不可以修改(他是一个拷贝) 在block被调用之前,修改变量并不会改变在block调用时的值 int a=10; 返回类型 (^变量名)(数据类型...
阅读全文
摘要:在ARC项目中加入MRC文件输入-fno-objc-arc当MRC中加入ARC文件输入-f-objc-arc
阅读全文
摘要:_strong Person *p强指针_weak Person *p弱指针Person *p强指针 ,默认是强指针单对象ARC中只要没有被强指针指向的对象,内存就会被释放_weak Person *p=[[Person alloc]init];在创建完就会被释放多对象人拥有狗@property (...
阅读全文
摘要:@autorealease{ ...}1 写在autorealease内存管理池中的对象,在结束时会自动realease一次2 不管对象在哪创建,要在里面调用一次autorealease才可以实现结束时会自动realease一次3 不要在autorealease中创建占内存较大的对象,会影响性能4...
阅读全文
摘要:使用格式@class 类名;@class写在.h文件里,import写在.m文件里。这样可以提高编译效率import会在导入文件发生变化时重新拷贝编译,而@class只会告诉使用者有这个类,并不会去拷贝。场景1使用import:a拷贝b,b拷贝c,c发生变化会影响ab使用@class:a拷贝b,b拷...
阅读全文
摘要:这个时固定格式#import "Person.h"#import "Camera.h"@implementation Person-(void)setCamera:(Camera *)camera{ if(_camera!=camera){//防止赋同一个值值 [_camera releas...
阅读全文
摘要:僵尸对象:占用空间被释放的对象野指针:指向僵尸对象的指针(给野指针发消息会报错)空指针:指向nil的指针(给空指针发消息会不报错)因为给野指针发消息会报错,因此我们要监听僵尸对象,这样就可以在控制台输出错误原因设置如下图
阅读全文
摘要:ARC (Automatic Reference Counting) 编译器自动在适当的时候给代码添加retain/release方法,而不需要程序员自己添加 与java垃圾回收机制的区别: java由系统在适当的时候自动回收空闲空间,而xcode由编译器回收MRC(Manul Refer...
阅读全文
摘要:在对象占用空间被释放的时候执行(引用计数器为0)而且与init方法相对应,要执行父类的dealloc方法(在最后调用,否则会引发某些未知错误)
阅读全文
摘要:对象引用的个数,占4个字节在对象创建的时候就为1,而只有为0的时候才会释放对象占用内存(所以系统不会释放对象占用的空间)获得retain消息时会加1,获得release消息时会减1retainCount用来显示对象引用的个数,但是不一定准确。而对象占用空间被释放时一定会调用dealloc方法
阅读全文
摘要:- (id)init { self = [super init]; if (self) { // Initialize self. } return self;}注意要先实现父类的init方法,再实现自己的
阅读全文
摘要:说明:SEL类型第一次调用时会逐个匹配方法名,并加载到内存,后面调用时就直接在内存中查找方法1 检查对象/方法有没有实现某个方法(使用respondsToSelector方法)@implementation Person-(void)setAge:(int)age{ _age=age;}-(int)...
阅读全文
摘要:instancetype相当于id,但是略有不同1instancetype在编译时可以判断对象的真实类型,而id不会.因此我们在自定义构造方法时要用instancetype2instancetype只可以做返回值类型,不可以用来定义变量 id都可以
阅读全文
摘要:+(instancetype)person //p小写{ return [[self alloc] init];}+(instancetype)personWithAge:(int)age{ Person *p=[[self alloc] init]; p.age=age; return p...
阅读全文
摘要:程序启动的时候,代码就会被加载到内存中,放入代码区;然后会自动执行load方法(只会在此时执行一次) 每个类的load方法都会执行,有继承关系会先执行父类,再执行子类的然后在某个类被创建的时候会执行其initialize方法(也只会执行一次) 有继承关系会先执行父类,再执行子类的
阅读全文
摘要:id相当于NSObject *但是略有不同,NSObject *是静态数据类型如Student继承Person继承NSObject,Person有age方法,Student有score方法Person *p=[Student new];[pscore];会编译出错,不能直接访问子类方法Student...
阅读全文
摘要:@property 数据类型 属性名(去掉下划线);@property int age;如果此时加了下划线@property int _age;则相当于给双下划线属性赋值__age设置读写属性@property (readonly) int age;//只读(只有get没有set方法)@proper...
阅读全文
摘要:有两个(一个对象方法,一个类方法),以对象方法为主.可以使用%@取值Person *p=[Person new];NSLog(@"%@",p);//调用对象description方法Class c=[Person class]NSLog(@"%@",c);//调用类的description方法注意:...
阅读全文
摘要:用于调用父类的方法如果父类中有两个同名的方法(一个类方法,一个对象方法),那么就看调用的时候方法是类方法还是对象方法+ (void) test{//在类方法中 [super test]//所以此时调用父类的类方法}对象方法同理
阅读全文
摘要:类似于this指针的作用在oc中既可以指向类,也可以指向对象,区别在于传递参数时是类还是对象
阅读全文
摘要:1 函数属于整个文件,而方法属于某个类2 函数可以直接调用,方法必须通过类或对象调用3 函数可以放在除了类声明以为的地方,方法只能在类里
阅读全文
摘要:对象的地址即其存储的第一个元素的地址但需要注意的是,对象的第一个元素不是我们定义的第一个属性而是isa指针isa指针
阅读全文
摘要:修饰普通变量 const int age;==>int const age; 值都不能改变修饰指针 const int *age;==>int const*age; 指针指向的值不能改变,指向的空间可以改变 int * const age; 指针指向的空间不能改变,指向的值可以改变
阅读全文
摘要:在基本类型时没有差别如typedef int myInt使用和#define int myInt看不出区别特别之处typedef char * String1和#definechar * String2String1 name1和String2 name2使用也看不出区别但是String1 name...
阅读全文
摘要:1 普通变量 typedef int myInt; 后面就可以用myInt代替int定义变量了,效果相同2 结构体变量 1) Struct Person { int age; char *name; } typedef Struct Person myPe...
阅读全文
摘要:三种格式第一种(根据表达式判断)#if DEBUG==100 语句#elseifCOUNT==60 语句#else 语句#endif说明:1. 该条件判断中的DEBUG值只有使用宏定义的值才有效,在函数里定义某个常规变量是没有效果的2. 每个语句可以是多条3. 在编译的时候,不满足条件的部分不...
阅读全文
摘要:不带参数的 格式#defined 变量名 值 变量名命名两种格式规范:CLASS_NAME或者kClassName **注意:后面不能加; 原因:在使用的时候会用值替换变量名,具体看下例 例 #defined COUNT 5 for(int i=0;i<COUNT;i++){....}相...
阅读全文
摘要:格式 struct 结构体名称 { 类型 属性名; 。。。;}[变量名];例struct Person{ int age; char *name;}[sp];指向结构体的指针struct Person sp;struct Person *spP=&sp;...
阅读全文
摘要:格式返回值类型 (*变量名)(参数。。。);例#include void test(){ printf("执行test\n");}int main(int argc, const char * argv[]) { void (*functionP)(); functionP=test;//这两...
阅读全文
摘要:常用类型(int char double等)指针访问保存的地址中数据时,会根据指针类型读取相应长度的数据。例: int num=129; char c='1'; int *intp=&c; printf("*intp=%i\n",*intp); 输出结果:*intp=33073。 分析 内...
阅读全文
浙公网安备 33010602011771号