一、BOOL类型 OC中有布尔类型 BOOL(C语言中没有布尔类型) 二、BOOL类型的本质 typedef signed char BOOL; 三、BOOL类型的取值范围 BOOL类型的变量又2种取值:YES 、NO #define YES (BOOL)1 #define NO (BOOL)0 四、代码练习: 运行结果: 时间: 2024-10-24 13:16:19
oc中的结构体主要有CGPoint,CGSize,CGRect,NSRange; /* Points. */ struct CGPoint { CGFloat x; CGFloat y; }; typedef struct CGPoint CGPoint; /* Sizes. */ struct CGSize { CGFloat width; CGFloat height; }; /* Rectangles. */ struct CGRect { CGPoint origin; CGSize s
点语法 点语法本质是函数的调用,不是像java中那样,是用来访问成员变量的:oc中访问成员变量是用 -> 访问的: Person *p = [Person new]; p.age = 10; // 如果点语法是进行了赋值操作,那么就相当于调用了setter方法: [p.age]; // 这样不赋值相当于调用了getter: 注意点: 尽量不要在setter或getter中调用点语法,容易引发死循环:死循环是由于递归调用引发的: // 在setter调用点语法 - (void)setAge:(in
------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- OC中没有想C++中的多继承,是利用分类和协议来实现的. 分类是在不影响原有存在类的基础上,为原有类添加属性和方法. 协议:一般只是声明方法.遵守了协议的类,才会去实现协议中的方法. 协议一般和代理的一起使用.分类,一般是为系统中的类添加
oc中的copy分为深copy和浅copy 深copy的意思是copy后又重新开辟一个内存空间,对copy的资源进行操作,不会影响本来的那份资源.表格中显示哪些为深copy copy前的可变性 可变 不可变 进行copy 不可变 不可变 进行mutablecopy 可变 可变 以上四中情况下,除了开始是不可变,进行copy后,还是不可变的,这种情况下是浅copy外,其他的三种情况都是深copy. 进行copy操作的,除了系统的NSArray/NSMuabltArray.NSDictionary/
类就好像一张图纸,而对象就是通过这个图纸创造出来的实物,一个类可以创造出多个对象,对象之间可以是不同的,根据成员变量值的不同即属性不同,对象也就 会不同,做出的行为状态也不同,例如一个车类,它的属性有speed,wheels等,根据speed值的不同可以区分对象,做出跑的状态不同,有的 speed是250km/h,有的speed是300km/h. 在oc中类的设计和对象的创建// 只要import Foundation.h就能使用Foundation框架里的所有头文件#import <
------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>
1:分类的使用场景:想对一个类,扩充一些功能,而又不改变原来类的模型,也不用继承,这时OC中的特有语法:分类可以做到: 当然分类也是一个类,也需要声明和实现,声明在.h文件中,实现在.m文件中,格式如下 // 声明 @interface 类名 (分类名称) @end // 实现 @implementation 类名 (分类名称) @end 2:分类的好处,当一个类比较庞大时,不同的部分可以放到不同的分类中,也方便团队中类的开发: 3:分类使用注意: a:分类不能增加成员变量,只能对原类增加方
涉及到内存管理,只读,多线程等很多功能时,setter和getter方法也就没那么简单了:当然@property依然强大,很好用: 1:内存管理相关参数: *:retain: (如果是oc对象类型),生成的setter会自动release旧值,retain新值: *:assign:(适用于非oc对象) 这个是默认的值 *:copy:release旧值,copy新值: @property (retain) NSString *name; // 同类型的参数不能同时写 // @property
1.文件的扩展名的区别 1>c语言源文件的扩展名是.c,而oc的扩展名是.m 2>c语言经过编译之后得到的目标模块扩展名是.obj,而oc编译之后是.o 3>c语言目标程序与其他目标程序和库函数经过连接得到可执行文件的扩展名是.exe,而oc是.out2.两者的编程思想是不同的 c语言是面向过程的编程语言,oc是面向对象的编程语言3.oc语言对于c语言的拓展 oc是面向对象的编程语言,它的基本数据类型比c语言多了个bool类型