objective-C

objective-C是C的超集可编译C
.h 头文件(存放接口)
.m 源码objective-c,c
.mm 源码objective-c,c,c++

预处理语句:
宏定义: #define
文件包含:#include,#import
条件编译:#ifdef #else

SmallTalk消息传递风格
调用对象的方式是给他发消息,消息的处理是运行时决定的,调用一个对象中没定义的方法(或发一个对象不能处理的消息)是可以通过编译的

基本语法

字符串 @"abcd"
方法调用 startedBlock();
调用实例方法 [obj method];//不含参 [counter increase:1];//含参 [[[UINavigationBar alloc] init] autorelease];//嵌套

  • 接口(.h文件中,只有一个实现,.h中的都是公开的)

          @interface MyClass {
      	int memberVar1;
      	id  memberVar2;
      }
              +(void) sayHello;//+类方法 -实例方法 .h中的方法都是公开的 objective-c中无私有方法
      -(return_type) instance_method1; 
      -(return_type) instance_method2: (int) p1;
      -(return_type) instance_method3: (int) p1 andPar: (int) p2;
      @end
    
  • 实现(.m文件中)

          @implementation MyClass {
      	int memberVar3;
      }
          +(void) sayHello {
      	NSLog(@"Hello, World");
      }
      -(return_type) instance_method1 {
      	....
      }
      -(return_type) instance_method2: (int) p1 {
      	....
      }
      -(return_type) instance_method3: (int) p1 andPar: (int) p2 {
      	....
      }
      @end
    
  • 方法的调用

          //类方法调用
      [MyClass sayHello];
      
      //实例方法调用
      mycls = [MyClass new];
      [mycls sayHello];
    
  • selector(方法指针)

      @implementation DemoViewController
      - (void)downButtonPressed:(id)sender {//响应“按钮被按下事件”的方法
      	UIButton *button = (UIButton*)sender;
      	[button setSelected:YES];
      }
      
      - (void)drawAnButton {
      	UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; 
      	btn.frame = _frame; 
      	btn.tag = 1;
      	btn.backgroundColor = [UIColor clearColor];
      	[btn addTarget: self
      		action: @selector(downButtonPressed:)
      		forControlEvents: UIControlEventTouchUpInside];//当这个按钮被按下时,触发downButtonPressed:方法
      }
      @end
      
      @implementation ETHotDealViewController
      - (void)viewDidLoad {
      
      	//获取数据源
      	HotDealDataSource *ds = [[HotDealDataSource alloc]init];
      	[ds reload];
      	_items = ds.items;
      
      	[self performSelector: @selector(refreshTable)
      		withObject: self
      		afterDelay: 0.5];//延迟0.5秒调用refreshTable方法
      }
      
      -(void)refreshTable
      {
      	[self.tableView reloadData];
      }
      @end
    
  • 继承

          @interface MyClass : NSObject
          @end
    
  • protocol(类似其他语言的接口)

          //定义协议
      @protocol Printable
      	-(void)print:(NSString)str;
      @end
      
      //继承协议,继承自NSObject
      @protocol Printable <NSObject>
      	-(void)print:(NSString)str;
      @end
      
      @protocol Printable
      @optional //可选实现,可以不实现print方法
      	-(void)print:(NSString)str;
      @end
      
      //协议实现
      //MyClass 继承自NSObject 实现了协议Printable和Drawable
      @interface  class MyClass : NSObject <Printable, Drawable>
      @end
    
  • category(分类,给已经存在的类添加方法)

          //NSObject+Json+XML.h
      @interface NSObject (Json)
      	-(NSString)toJson;
      @end
      
      @interface NSObject (XML)
      	-(NSString)toXML;
      @end
      
      //NSObject+Json+XML.m
      @implementation NSObject (Json)
      	-(NSString)toJson {
      		//...
      	}
      @end
      
      @implementation NSObject (XML)
      	-(NSString)toXML {
      		//...
      	}
      @end
      
      //调用
      import "NSObject+Json+XML.h"
      @implatementation XYZController
      	-(void)test {
      		NSObject *obj = [[NSObject alloc]init];
      		NSString *json = [obj toJson];
      		NSString *xml = [obj toXML];
      	}
      @end
    

Cocoa(Mac OS App的开发框架)
Cocoa Touch(iOS开发用的框架)

常用的设计模式delegate

一个AppDelegate(UIApplicationDelegate)
一个UIWindow
UIResponder(响应用户操作)

原文地址:https://www.cnblogs.com/yfann/p/4809627.html