一:Objective-C语言基础
二:Objective-C类与继承和协议
一:Objective-C语言基础:
1.1)#import 包含头文件 与#include 作用相同
1.2)Object-c类包含两大块代码
1、 接口MyClass.h
@interface MyClass
@end
2、 实现MyClass.m
@implementation MyClass
@end
1.3)没有在@interface中声明的方法依然可以在@implementation中调用。这是由于object-c是动态语言一般情况下,都会提供h文件,所以在m文件中写h文件中没有的方法,别人是不会知道的,这相当于将方法变相的私有化。类名第一个字母大写。
1.4)标准的类定义格式 :
MyClass.h @ interface MyClass:NSObject{ //实例变量 } - (NSString*) sayhello; @end MyClass.m @implementation MyClass -(NSString*) sayhello{ return @”Hello!”; } @end
1.5)分配内存与设置初始值
MyClass *myclass=[[MyClass alloc]init];
所有的object-c对象变量都是指针类型的,数据类型的右边要加一个星号。
1.6)消息和方法:
+或者- (返回类型)方法名: (参数类型)参数名;
类方法(+):通过发一个消息给类本身来调用
1、 工厂方法:给类分配实例的方法
2、 全局公用方法:可以被其他类调用,不需要实例化
实例方法(-):通过发一个消息给类的实例来调用
- (void) setNumberator: (int) n;
1.7)调用方法:
[实例 方法];---------实例方法
[类名 方法];---------类方法
也可以理解为[接收方 消息];
变量 = [实例 方法];--------一个方法可以返回值,保存在变量中
[接收方 名字1:参数1 名字2:参数2 名字3:参数3 …];
1.8)可以使用”.”来调用一个变量实例
a.num=3;<=>[a num:3];
1.9)nil(空)与C语言的NULL相同
Nil定义一个指向空的类(是class,不是对象)
1.10)数据类型:
1 char、int、float、double、long、unsigned short、const、static等
2 字符串:NSString
字符串常量 @” ”
3结构体struct、指针
4 id类型:可以存储任何类型的对象
typedef struct objc_object{
Class isa;
}*id;
Id是指向struct objc_object的一个指针,指向任何一个继承了NSObject类的对象,id是一个指针,在使用时不需要加星号。
Id取代int类型成为默认的数据结构。
5 BOOL YES/NO 相当于C中的bool类型(true,false)
6 SEL 选择器:传递函数的方法,与c语言的函数指针、c++的函数引用相似。
- (void)print; SEL sel = @selector(print); if([obj respondsToSelector:sel]){//判断该对象是否有相应的方法 [obj performSelector:sel withObject:nil];//调用选择器方法 }
7 Class(类)被定义俄日一个指向struct objc_class的指针。
8 数组,在object-c中有NSArray类,因此很少用到数组。
1.11)操作符和控制语句
Object-C使用C语言中的运算符。
判断语句: if...else if...else/switch
循环语句 :while/for/do...while
1.12)输出函数:NSLog
输入函数:scanf