OC 是个啥啊,竟然看不懂。

扩展名

.h 头文件。头文件包含类,类型,函数和常数的声明。
.m 源代码文件。这是典型的源代码文件扩展名,可以包含 Objective-C 和 C 代码。

hello world

  1. #import <Foundation/Foundation.h>
  2. int main(int argc, char *argv[]) {
  3. @autoreleasepool {
  4. NSLog(@"Hello World!");
  5. }
  6. return 0;
  7. }

变量

函数

接口

image.png

  1. @interface MyObject : NSObject {
  2. int memberVar1; // 实体变量
  3. id memberVar2;
  4. }
  5. +(return_type) class_method; // 类方法
  6. -(return_type) instance_method1; // 实例方法
  7. -(return_type) instance_method2: (int) p1;
  8. -(return_type) instance_method3: (int) p1 andPar: (int) p2;
  9. @end

方法前面的 +/- 号代表函数的类型:

  • 加号(+)代表类方法(class method),不需要实例就可以调用,与C++ 的静态函数(static member function)相似。
  • 减号(-)即是一般的实例方法(instance method)。
  1. @interface Person : NSObject {
  2. @public
  3. NSString *name;
  4. @private
  5. int age;
  6. }
  7. @property(copy) NSString *name;
  8. @property(readonly) int age;
  9. -(id)initWithAge:(int)age;
  10. @end

类 - 实现接口

  1. @implementation MyObject {
  2. int memberVar3; //私有實體變數
  3. }
  4. +(return_type) class_method {
  5. .... //method implementation
  6. }
  7. -(return_type) instance_method1 {
  8. ....
  9. }
  10. -(return_type) instance_method2: (int) p1 {
  11. ....
  12. }
  13. -(return_type) instance_method3: (int) p1 andPar: (int) p2 {
  14. ....
  15. }
  16. @end
  1. @implementation Person
  2. @synthesize name;
  3. @dynamic age;
  4. -(id)initWithAge:(int)initAge
  5. {
  6. age = initAge; // 注意:直接赋给成员变量,而非属性
  7. return self;
  8. }
  9. -(int)age
  10. {
  11. return 29; // 注意:并非返回真正的年龄
  12. }
  13. @end

对象

Objective-C创建对象需通过alloc以及init两个消息。alloc的作用是分配内存,init则是初始化对象。 i

  1. // 创建对象
  2. MyObject * my = [[MyObject alloc] init];

方法调用

image.png

  1. obj.method(argument);
  2. [obj method: argument];

控制语句

yes no

  1. 比如C#里你可以这么写:
  2. this.hello(true);
  3. Objective-C里,就要写成:
  4. [self hello:YES];