iOS
文章平均质量分 54
李峰峰
爱编程,爱生活
展开
-
OC之成员变量封装
#import@interface Student : NSObject{ // 成员变量尽量不要用@public // @public int age; //@public // 只读(readonly):只允许外界访问我的no,不允许外界修改我的no int no; // 只需要提供get方法} /* se原创 2015-08-31 14:36:21 · 391 阅读 · 0 评论 -
OC之@property和@synthesize
在OC中经常使用get和set方法,但是当成员变量太多的时候,就要敲很多行get和set方法。在xcode4.4之前,为了简洁代码,可以使用@property声明get和set方法:@property int age;就相当于:- (void)setAge:(int)age;-(int)age;后面代码可以就当作正常写了get和set方法一样去调用- (void)setAge:原创 2015-08-31 14:51:07 · 321 阅读 · 0 评论 -
OC之id
id是万能的指针,可以指向\操作任何对象,例如:Person *p = [Person new];相当于:id p = [Person new];注意id和p之间不要再加*了,id中默认就带*了。原创 2015-08-31 14:54:19 · 398 阅读 · 0 评论 -
ios之SEL
SEL其实是对方法的一种包装,将方法包装成一个SEL类型的数据,去找对应的方法地址。找到方法地址就可以调用方法, 其实消息就是SEL。对于下列方法调用:[p test2];主要有以下步骤:1.把test2包装成SEL类型的数据2.根据SEL数据找到对应的方法地址3.根据方法地址调用对应的方法比如一个类中有两个方法:+test和-test2每个方法在内存中的地址都有一个对应的原创 2015-08-31 14:59:10 · 386 阅读 · 0 评论 -
OC之输出
NSLog(@”我的OC程序”)。NSLog输出内容会自动换行。其中@与后面内容之间不能有空格。当然在OC中也可以使用printf函数输出,由于NSLog是OC系统定义过的,所以使用之前要先导入相关头文件。#import ,当然import也可以换成include。#import有两个用途,第一个用途:与C语言中的include完全一样。第二个用途:可以自动防止文件内容被重复拷贝,也就原创 2015-08-31 14:32:44 · 1195 阅读 · 0 评论 -
OC之NSString
#import @interfacePerson : NSObject{ //char *_name; NSString *_name;}@end intmain(){ /* // 最简单的创建字符串的方式 NSString*str = @"itcast"; char *name = "itcast";原创 2015-08-31 14:44:17 · 283 阅读 · 0 评论 -
OC之点语法详解
点语法的本质是对set和get方法的调用:Person *p = [Person new];p.age = 10;上面p.age = 10不是给Person的成员变量age赋值,而是调用Person中的setAge方法,并传递参数10,所以p.age = 10就相当于[p setAge:10],当然也可以根据调用Person中的get方法,比如Person中有个get方法名为age原创 2015-08-31 14:48:56 · 551 阅读 · 0 评论 -
OC之内存管理
无论是ios还是android中,系统对每个程序运行时内存的占用都有一个限制,默认都是几十M左右大小,当程序占用的内存的大小超过限制时,程序可能就会被强制退出。拿iphone4来说,当程序内存占用超过40M时,会出现内存警告,当内存占用达到45M,还会再一次内存警告,对于以上两次警告如果不做出释放内存操作,当达到120M时,系统会自动kill掉程序。在内存中,分为堆和栈,栈中主要存放变量,原创 2015-08-31 15:01:10 · 792 阅读 · 0 评论 -
OC之iOS开发常用Unix指令
在终端中输入指令pwd 查看当前目录ls 列出当前目录下所有文件ls –l 详细列出当前目录下文件的属性mkdir 在当前目录下新建文件夹(mkdir 文件名)touch 在当前文件夹下新建文件(touch xxx.txt)cd 改变当前目录(cd 新目录/)open 打开文件或文件夹clear 清空终端上下键 返回上一个指令tab键补齐原创 2015-08-31 14:31:14 · 780 阅读 · 0 评论 -
OC之多态
多态就是用父类类型的指针创建子类的对象,比如Dog类继承了Animal类,下面都是多态:Animal *aa = [Dog new];Dog *dd = (Dog *)aa;1.没有继承就没有多态2.代码的体现:父类类型的指针指向子类对象3.好处:如果函数\方法参数中使用的是父类类型,可以传入父类、子类对象4.局限性:父类类型的变量不能直接调用子类特有的方法。必须强转为原创 2015-08-31 14:43:12 · 347 阅读 · 0 评论 -
OC之继承
#import/* 1、继承的好处: (1)抽取重复代码 (2)建立了类之间的关系 (3)子类可以拥有父类中的所有成员变量和方法 2、注意点 (1)基本上所有类的根类是NSObject */ /********Animal的声明*******/@interfaceAnimal : NSObject{ int _age; do原创 2015-08-31 14:40:42 · 319 阅读 · 0 评论 -
OC之非ARC环境下循环retain问题
观察上述情况,上述就是著名的循环引用问题,对于此类问题,“你包含我,我包含你”,里面相关的对象占用的内存永远回收不了,解决办法很简单,与常规方法不同。正常情况下,我们应在Person.h文件中加上:@property (nonatomic, retain) Card *card;,在Card.h文件中加上@property (nonatomic, retain) Person *person;。为原创 2015-08-31 15:06:20 · 431 阅读 · 0 评论 -
OC之OC的类
比如,定义一个类名为Car的类,类的声明(类的声明通常写在头文件中,即.h文件中,也可直接写在.m文件中):// NSobject可以让类有创建对象的能力@interface Car : NSobject{//声明对象属性@public //是成员变量变成共有的,其下所有成员变量都将变成共有的,当然也可以在每个成员变量上都加@public//【备注】实际开发中成员变量应以原创 2015-08-31 14:34:32 · 362 阅读 · 0 评论 -
OC之构造方法
完整地创建一个可用的对象系统需要进行以下两步:1.分配存储空间 +alloc2.初始化 -init比如创建一个对象:Person *p = [Person new]; 则系统实际上进行了以下两步: 1.调用+alloc分配存储空间 Person *p1 = [Person alloc]; 2.调用-init进行初始化原创 2015-08-31 14:57:07 · 380 阅读 · 0 评论 -
OC之description
打印对象用%@,比如打印字符串对象:NSString *name = @”haha”;NSLog(@”%@”,name);输出结果为:haha比如:Person *p = [[Person alloc]init];p.age = 20;p.name = @”jack”;NSLog(@”%@”,p);会打印出对象p的所属类和内存地址。比如:默认情况下,除字符串原创 2015-08-31 14:58:13 · 523 阅读 · 0 评论 -
OC之@class
假设有两个类,一个是Card,一个是Person,当Card中包含Person,我们就需要在Card前加上#import “Person.h“。如果此时Person中再包含Card的话,我们就又得在Person类前加上#import “Card.h”。这时再编译运行就会出现故障,因为编译运行会导致两个类不停得拷贝对方,导致报错。这是可以在两个类前用:@class 类就可以避免这种问题,原创 2015-08-31 15:04:19 · 664 阅读 · 0 评论 -
OC之set方法内存管理
注意在写代码的时候,只要创建了对象,用完这个对象之后必须记得要调用release方法,要使用这个对象的时候必须调用retain方法。比如拿人看书这个例子:首先有一个人p1看书b,Person *p1 = [[Person alloc]init];//p1计数器=1Book *b = [[Book alloc] init];//b计数器=1[p1 setBook:b]; //b计原创 2015-08-31 15:02:38 · 516 阅读 · 0 评论 -
OC之ARC环境中的循环strong问题
main.m文件:#import #import "Person.h"#import "Dog.h"int main(){ Person *p = [[Person alloc] init]; Dog *d = [[Dog alloc] init]; p.dog = d; d.person = p; return 0;}Dog.m文件:原创 2015-08-31 15:10:45 · 462 阅读 · 0 评论 -
OC之类方法
#import/* 1、对象方法 (1)减号-开头 (2)只能由对象来调用 (3)对象方法中能访问当前对象的成员变量(实例变量)2、类方法 (1)加号+开头 (2)只能由类(名)来调用 (3)类方法中不能访问成员变量(实例变量) 3、类方法的好处和使用场合 (1)不依赖于对象,执行效率高 (2)能用类方法,尽量用类方法 (3)场合:原创 2015-08-31 14:37:40 · 348 阅读 · 0 评论 -
OC之self详解
self是一个指针,用在方法中时,哪个对象调用该方法self指针就指向哪个对象,可以把它当作调用该方法的那个对象的指针一样使用。#import/* self的用途: (1)谁调用了当前方法,self就代表谁 * self出现在对象方法中,self就代表对象 * self出现在类方法中,self就代表类 (2)在对象方法利用"self->成员变量名"访问当前对象内部的成原创 2015-08-31 14:39:08 · 4380 阅读 · 0 评论