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

  • 相关阅读:
    Robocode教程4——Robocode的游戏物理
    JAVA:获取系统中可用的字体的名字
    Robocode游戏规则
    Robocode教程2——你的第一个robo,取个好名字哦
    Robocode教程1——安装、运行、配置
    第二十四章 异常和错误处理 6异常类与模板的关系 简单
    第二十四章 异常和错误处理 5异常类的虚函数 简单
    第二十三模板 18.4算法类 简单
    解决不能通过'/tmp/mysql.sock'连到服务器 简单
    第二十四章 异常和错误处理 4创建异常类的成员函数 简单
  • 原文地址:https://www.cnblogs.com/yfann/p/4809627.html
Copyright © 2020-2023  润新知