知识要点:isa,成员变量,函数
- 在java里有8个基础数据类型,byte,short,int,long,float,double,char,boolean还有就是引用类型,这里引用类型就是指实例化(new)出的类。
- 在c里有6个基础数据类型,short,int,long,float,double,char
- 类:是一种结构,表示对象的类型。
- 对象:它包含值和指向其类的隐藏指针。
- 实例:“对像”的另一种称呼。
下面是根据视频练习的代码:
#import <Foundation/Foundation.h> typedef enum { red,blue,green }DogColor; typedef enum{ male,femle }Sex; @interface Dog: NSObject { @public DogColor dogColor; int speed; double weight; Sex sex; } -(void) eat; -(void) wang; -(void) run; -(BOOL) isSameColor:(Dog *) dog; -(int) compareSpeed:(Dog *) dog; @end @implementation Dog - (void) eat { weight += 0.5; NSLog(@"狗吃完长肉,%f",weight); } - (void) wang { } -(void) run { weight -= 0.5; NSLog(@"狗跑完减肉,%f",weight); } - (BOOL) isSameColor:(Dog *) dog { return dogColor == dog->dogColor; } -(int) compareSpeed:(Dog *) dog { return speed - dog->speed; } void testDog() { Dog *dog1 = [Dog new]; dog1->weight = 10; dog1->speed = 100; dog1->dogColor = red; Dog *dog2 = [Dog new]; dog2->weight = 100; dog2->speed = 80; dog2->dogColor = red; NSLog(@"The dog is same color?%i",[dog1 isSameColor:dog2]); NSLog(@"The speed comapre: %d",[dog1 compareSpeed:dog2]); } int main() { testDog(); return 0; }
类的方法
1.-实例函数,对象的方法
2.对象的方法声明在@interface和@end之间
3.对象的方法只能用对象来调用
4.对象方法只能由对象调用
函数
1.函数能写在除@interface和@end之间的任意位置
2.函数对象不依赖于对象
3.函数内部不能直接通过成员变量名访问某个对象的成员变量
2.+成员函数
语法补充:
NSLog(@"字符串:%@",name);
NSLog(@"字符:%c",a);
NSLog(@"布尔值:%i",isShow);
NSLog(@"整形:%i",i);
NSLog(@"单精度浮点数: %f",f);
NSLog(@"精度浮点数,且只保留两位小数:%.2f",f);
NSLog(@"科学技术法:%e",f);
NSLog(@"科学技术法(用最简短的方式):%g",f);
ISA
任何一个对象继承或者间接继承NSObject的类,它的实例对象都会有一个isa指针,指向类的对象(已经实例实例化),这个里面包括了变量,方法,遵守的协议等(用于存放类的数据)。
详解oc的对象模型(http://blog.devtang.com/blog/2013/10/15/objective-c-object-model/)