zoukankan      html  css  js  c++  java
  • 01-OC介绍

    目录

    一、OC语言介绍

    二、ios系统

    三、在OC语言开发中使用C语言语法

    四、面向对象

    回到顶部

    一、OC语言介绍

    1 早在20世纪80年代早期,BardCox发明了Objective-C,扩充了C,面向对象的编程语言。

    2 NextSTEP简称NS;

    1985年,Steve Jobs成立了NeXT公司;

    1988年,Next Software公司获得了OC语言的授权,NEXTSTEP环境,为了苹果操作系统创建的开发包,发行操作系统OSX的基础,

    1996年,苹果公司收购了NeXT Software公司,NEXTSTEP环境为了苹果操作系统,创建的开发包,发行操作系统OSX的基础。这个开发环境版本被苹果公司更名位Cocoa框架。

    3 Cocoa框架是苹果公司为了MAC OS X所创建的原生面向对象的编程环境。Cocoa应用程序一般在苹果的工具xcode上用OC编写的应用程序。

    APP Store (全称:Application Store应用程序商店)

    使用cocoa编程环境开发的应用程序叫cocoa应用。

    使用cocoa touch编程框架 -> IOS app

    cocoa框架由两部分组成,Foundation框架和Application Kit框架。

    Foundation框架是基本框架,包括:字符串、数字、数组、字典集合等。

    Application Kit框架,应用程序工具箱,包括实现程序图形、事件驱动和用户界面的全部对象,如:窗口、对话框、按钮、菜单。。。而且这个列表还在不断添加。

    回到顶部

    二、IOS系统

    IOS系统是苹果硬件(便携设备)上的一个操作系统,在2007年1月9日,MacWorld大会上公布的系统,最初设计给iPhone使用的,后来陆续用到iPod touch、iPad、apple TV等苹果产品。

    开发方向:IOS App、IOS Game

    使用语言:IOS App(C、OC)、IOS Game(C、OC、C++)

    第一个程序

    1 iOS

    create project -> ios -> application -> single view  application -> run

    2 OSX

    create project -> osx -> create project -> command line tool -> type:foundation

    测试:C语言的语法是否可以在main.m文件使用变量、条件分支、循环、函数、结构体、指针。

    回到顶部

    三、在OC语言开发中使用C语言语法

    1 main.c -> main.m

    2 include - > import(避免重复导入)

    标准函数库 -> 库(Foundation)

    3 输出函数printf -> NSLog(加入了时间、地点)

    在OC中所有的字符串前都要加上'@'符号

    4 在编译的时候,gcc不支持OC的新语法,应该使用新的编译命令clang,编译链接时,需要指定使用的框架(-framework Foundation)

    命令行:clang -framework Foundation main.m

    OC中独有的内容

    1 xcode编译器,LLVM:LowLevelVirtualMachine

    2 逻辑值数据类型

          BOOL = YES(1) // NO(0)

    练习:定义一个函数,求两个数是否相等,函数的返回值是逻辑只类型,在main函数中,根据逻辑值输出两个数是否相等。

     1 //bool
     2 #import <Foundation/Foundation.h>
     3 //练习:定义一个函数,求两个数是否相等,函数的返回值是逻辑值类型,在main函数中,根据逻辑值输出两个数是否相等。
     4 BOOL test(int i1,int i2)
     5 {
     6     if (i1 == i2) {
     7         return YES;
     8     }else{
     9         return NO;
    10     }
    11 }
    12 
    13 int main(int argc, const char * argv[])
    14 {
    15 
    16     @autoreleasepool {
    17         BOOL b;
    18         int i1 = 4,i2 = 8;
    19         b = test(i1, i2);
    20         if (b) {
    21             NSLog(@"相等");
    22         }else{
    23             NSLog(@"不相等");
    24         }
    25         NSLog(@"Hello, World!");
    26         //逻辑值数据类型
    27         bool b1 = true;
    28         NSLog(@"b1:%d",b1);
    29         BOOL b2 = YES;
    30         NSLog(@"b2:%d",b2);
    31         
    32     }
    33     return 0;
    34 }

    回到顶部

    四、面向对象

    1 类是一种主观思想,是对我们需要解决问题的一种抽象,是创建对象的模型。

    2 对象就是具体的数据集合,计算机会把类->实例化->对象。

    3 第一个面向对象程序

    设计类Student,一个类由两个部分组成.h(声明)和.m(实现)

    类的实例化->对象:

    通过类发送alloc(开辟内存空间)创建对象,通过对象(指针变量)找到内存的对象。

    向对象发送消息(函数),此时对象就会响应消息。

    对象如果有属性,对象.属性=值,给对象的属性赋值。

    练习:创建一个point类,有横坐标x,纵坐标y,能显示位置(show方法),创建两个位置并显示。

    main.m

     1 //
     2 //  main.m
     3 //  第一个面向对象程序
     4 //
     5 //  Created by tarena on 13-12-16.
     6 //  Copyright (c) 2013年 tarena. All rights reserved.
     7 //
     8 
     9 #import <Foundation/Foundation.h>
    10 #import "Student.h"
    11 
    12 int main(int argc, const char * argv[])
    13 {
    14 
    15     @autoreleasepool {
    16         //创建Student对象,alloc 开辟内存空间
    17         //Student类 -> alloc实例化 -> stu对象(指向首地址)
    18         Student* stu = [Student alloc];
    19         NSLog(@"stu address:%p",stu);
    20         stu.age = 12;
    21         [stu study];//调用类中的动态(-)方法
    22         //[Student study];//调用类中的静态(+)方法
    23 
    24     }
    25     return 0;
    26 }
    View Code

    Point.h

     1 //
     2 //  Point.h
     3 //  第一个面向对象程序
     4 //
     5 //  Created by tarena on 13-12-16.
     6 //  Copyright (c) 2013年 tarena. All rights reserved.
     7 //
     8 
     9 #import <Foundation/Foundation.h>
    10 
    11 @interface Point : NSObject
    12 
    13 @end
    View Code

    Point.m

     1 //
     2 //  Point.m
     3 //  第一个面向对象程序
     4 //
     5 //  Created by tarena on 13-12-16.
     6 //  Copyright (c) 2013年 tarena. All rights reserved.
     7 //
     8 
     9 #import "Point.h"
    10 
    11 @implementation Point
    12 
    13 @end
    View Code

    Student.h

     1 //
     2 //  Student.h
     3 //  第一个面向对象程序
     4 //
     5 //  Created by tarena on 13-12-16.
     6 //  Copyright (c) 2013年 tarena. All rights reserved.
     7 //
     8 
     9 #import <Foundation/Foundation.h>
    10 
    11 @interface Student : NSObject
    12 
    13 @property int age;
    14 
    15 -(void)study;
    16 @end
    View Code

    Student.m

     1 //
     2 //  Student.m
     3 //  第一个面向对象程序
     4 //
     5 //  Created by tarena on 13-12-16.
     6 //  Copyright (c) 2013年 tarena. All rights reserved.
     7 //
     8 
     9 #import "Student.h"
    10 
    11 @implementation Student
    12 -(void)study
    13 {
    14     NSLog(@"%d调用了study方法",self.age);
    15 }
    16 @end
    View Code

    说明:因为OC文件太多,代码也太多,就不分享了。

  • 相关阅读:
    LeetCode#160-Intersection of Two Linked Lists-相交链表
    LeetCode#2-Add Two Numbers-两数相加
    LeetCode#141-Linked List Cycle-环形链表
    LeetCode#66-Plus One-加一
    LeetCode#35-Search Insert Position-搜索插入位置
    LeetCode#203-Remove Linked List Elements-移除链表元素
    基姆拉尔森公式
    [leetcode] 树(Ⅲ)
    常用算法合集(一)
    离散数学 II(最全面的知识点汇总)
  • 原文地址:https://www.cnblogs.com/yangmx/p/3485125.html
Copyright © 2011-2022 走看看