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
    -(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(响应用户操作)

posted @ 2015-09-15 10:58  fannet  阅读(212)  评论(0)    收藏  举报