-----Java培训、Android培训、iOS培训、.Net培训、期待与您交流!-------
一、类的声明
注意点:类名的的命名规范:有意义、驼峰命名、首字母大写
#import <Foundation/Foundation.h> // 类的声明 @interface : NSObject { @public int speed; // 时速 } - (void)run; // 跑的行为 @end
1>成员变量:
interface中的大括号{}中是声明成员变量(变量默认初始化为0)的。
@public是变量的访问权限。
interface中大括号之外是用来声明类方法的。
2>成员变量的作用域:
@public:任何类。
@private:类内。
@protected:类本身与子类。
3> NSObject
所有类或父类必须继承代表具有创建类对象的能力。
二、类的实现
@implementation Car - (void) run { NSLog(@"时速为%d的车子", speed); } @end
三、创建对象
//在非ARC内存管理模式下
int main() { //创建车子对象
Car *c = [[Car alloc]init];//此处会retain一次
c->speed = 300;
[c run];
[c release];//这里需要释放对象资源
return 0; }
四、常见错误
1> 只有类的声明,没有类的实现。
2>漏了@end。
3>@interface和@implementation嵌套。
4>两个类的声明嵌套。
5>成员变量没有写在括号里面。
6>方法的声明写在了大括号里面。
五、Objective-C与函数的区别
1>oc方法只能声明在@interface和@end之间,只能实现在@implement和@end之间,归对象和类所有(依赖于对象)。
2>函数可写在除@interface外文件任何地方,归文件所有(不依赖于对象)。
3>oc方法以减号或加号开头,函数则不需要。
六、方法的定义
1>不带参数的方法定义:
// 方法声明 - (double)pi; // 方法实现 - (double)pi { return 3.14; }
无参数方法实例图:方法类型可以是加号或减号
无参方法调用实例图:
2>带单个参数方法的定义:
// 方法声明 - (double)square:(double)number; // 方法实现 - (double)square:(double)number { return number * number; }
带单个参数方法的实例图:
带单个参数方法的调用:
3>多个参数方法的定义:
// 方法声明 - (double)sumOfNum1:(double)num1 andNum2:(double)num2; // 方法实现 - (double)sumOfNum1:(double)num1 andNum2:(double)num2 { return num1 + num2; }
多个参数方法定义实例图:
多个参数方法的调用:
七、方法名注意点:
1>冒号也是方法名的一部分。
2>同一个类不允许两个对象方法同名。
八、匿名对象:
[[car new] run]; //在非ARC内存管理模式下不建议这样使用,导致占用内存不能及时释放。