文档章节

黑马程序员-5-Objective-C学习笔记(OC的初步认识)

 明天过后1
发布于 2014/09/30 19:33
字数 1229
阅读 43
收藏 1

---------------------- Java培训.Net培训Android培训IOS培训、期待与您交流! ---------------------- 

1. 简介

    (1) Objective-c( OC )是在c语言基础上增加了一层面向对象的语法,对于OC对象本质是C语言结构体。

      (2) OC完全兼容C语言,但要注意的是源文件的扩展名为.m

      (3) 如果要兼容C++扩展名为.mm

      (4) OC可以开发 Mac OS X平台和IOS平台的应用程序

      (5) OC文档存放位置 :  /Applications/Xcode.app/Contents/Developer/ 

      (6) 随着IOS移动设备的普及OC的受欢迎度也逐年升高。

             


2. 面向对象编程( OOP )

    a. 面向过程 和 面向对象

           (1) 面向对象是一种思维方式,面向对象编程是利用这种思维方式来进行开发,当然也需要面向对象语言的支持。

           (2) 面向对象是由面向过程演化而来的。如果用面向过程的思维来完成一件事,比如起床上学。

                面向过程 :

                    第一步 : 起床叠被子

                    第二步  : 换衣服刷牙

                    第三步 : 做早饭吃早饭

                    第四步 : 骑车上学

                            它的好处是清晰,简单,但如果某些地方需要改变,起床好的叠被子放在什么地方,今天需要穿什么衣服,今天煮的早饭是什么等等。如果变成代码的话就很难维护。一个地方要改可能很多地方都要改。

                     而且实际开发中项目都比较大,如果用面向过程的思维来开发的话,会大大增加开发的难度,为了解决这个问题面向对象编程就产生了。

                面向对象 :

                    我们可以把上述事件都集中在一个人身上,并为这个人声明者几种行为 :

                    学生{

                        叠被子的功能;

                        洗刷功能;

                        做早饭吃早饭功能;

                        骑车上学的功能;

                    }

                            他的好处是易于维护。因为我们使用这些功能的时候并不关心他的实现功能是如何的,只关心他提供的功能,置于要获得实现效果可以向这个对象调用,这样通过这个对象可以降低这件事情过程中环节                        之间的耦合性,比如今天要求做什么早饭,我们只需要在做早饭那个模块中修改即可,并不影响其他功能。显示开发中对象成千上万,面对不同的需求我们只关需要把注意力集中在该对象中即可,只要不改变该对                        象的结构只修改对象的某些功能实现并不影响整体的稳定性。

    b. 总结

        OC也是一种面向对象的编程语言,因此了解面向对象思想是非常重要,而且OC中为了更好地发挥面向对象编程的好处,提供了协议这种特性,这类似于java中的接口,大大提高代码的可维护性。

3. 语法特点

    (1) 基本上所有关键字都是以@开头 :

        @interface、@implementation、@end 

        @public、@protected、@private、@selector 

        @try、@catch、@throw、@finally  

        @protocol、@optional、@required、@class

        @property、@synthesize、@dynamic

        self、super、id、_cmd、__block、__strong、__weak、

    (2) 字符串表示方法 :

        C 语言 : "hello world"            输出 : printf("%s","hello world");

        OC : @"hello world"                输出 : NSLog(@"hello world");  NSLog(@"%@",@"hello world");

    (3) 其他语法 :

基本数据类型 char int float double BOOL(YES/NO)
nil 相当于C语言的NULL,也就是0
基本语句
循环语句(while ,do while ,for),条件语句(if ,if else ,switch)
注释 // 和 /*..*/
输出 NSLog(@"..."); NSlog(@"%@,%d...",...);

    (4) BOOL

        1) 它的定义 :

            typedef signed char BOOL;

        2) 它有两种取值 : YES ,NO

            #define YES (BOOL)1

            #define NO  (BOOL)0

    (5) #import

        1) 作用和 #include相识,都是拷贝文件文本内容

        2) 可以防止文件被多次拷贝 :

    #import <Foundation/Foundation.h>
    #import <Foundation/Foundation.h>
    #import <Foundation/Foundation.h>
    /*
        使用了三次#import指令但实际上 Foundation.h 只拷贝了一份
        那么我们编写头文件的时候就不许要加入以下代码
        #ifndef _FOUNDATION_H_
        #define _FOUNDATION_H_
        #endif
    */
    int main(){
        ...
        return 0;
    }


4. Foundation框架简介 

    (1) Foundation框架是开发 IOS 和 Mac 应用程序必备框架,很多OC面向对象语法都是基于该框架的

    (2) 该框架包含了很多编程接口 : 例如 :NSLog() , 反射等等...

    (3) 如果想使用该框架把整个框架包含进来即可 : #import <Foundation/Foundation.h>

    a. 简单开发

    (1) 源文件 :

    // test.m
    #import <Foundation/Foundation.h>
    int main(){
        NSLog(@"hello world");
        return 0;
    }
    
    /*
        终端编译指令:
        cc -c test.m                         // 得到test.o文件
        cc test.o -framework Foundation      // 得到a.out可执行文件,如果没有使用Founation框架 -framework Foundation 就可以删掉
        ./a.out                              // 执行可执行文件 
    */




---------------------- Java培训.Net培训Android培训IOS培训、期待与您交流! ---------------------- 

 详情请查看:http://edu.csdn.net/heima



© 著作权归作者所有

共有 人打赏支持
粉丝 2
博文 23
码字总数 36166
作品 0
佛山
Objecitive-C中的nil

当我学习OC的时候,我总是忍不住在对比。Actionscript是如何实现,而oc又是如何实现。这不,碰到nil的时候我发现了很大的不同之处。做个笔记。 在as中,如果将一个对象置为null,相当于空指针...

ChildhoodAndy
2013/03/21
0
3
一、Objective-C概述

说明:这个Objective-C专题,是学习iOS开发的前奏,也为了让有面向对象语言开发经验的程序员,能够快速上手Objective-C。如果你还没有编程经验,或者对Objective-C、iOS开发不感兴趣,请忽略...

长平狐
2013/03/28
113
0
iOS开发初学者如何入门?

iOS开发初学者如何入门? 现在如何学习iOS开发成为很多人的疑问,事实上,并不是想象中的那样难,学习iOS开发从最根本的一点上去思考就是,把iOS培训的知识按区块分开,更加便于学习,现在很多...

红牛王
2017/05/23
59
0
一、C语言概述

说明:这个C语言专题,是学习iOS开发的前奏。也为了让有面向对象语言开发经验的程序员,能够快速上手C语言。如果你还没有编程经验,或者对C语言、iOS开发不感兴趣,请忽略 为什么iOS开发要先...

长平狐
2013/03/28
109
1
AppCode 2016.3 发布计划路线图

AppCode发布下一步重大更新计划,需注意的是,这只是一个初步计划,所以不是所有下面列出的功能都将被包括在AppCode 2016.3 中。 Swift: Swift 3 support in parser (OC-13726) New formatti...

oschina
2016/08/10
2.9K
5

没有更多内容

加载失败,请刷新页面

加载更多

下一页

[MicroPython]STM32F407开发板驱动OLED液晶屏

1.实验目的 1.学习在PC机系统中扩展简单I/O 接口的方法。 2.进一步学习编制数据输出程序的设计方法。 3.学习 F407 Micropython开发板控制OLED显示字符。 2.所需元器件 F407 Micropython开发板...

bodasisiter
31分钟前
0
0
php require和include 相对路径一个有趣的坑

以前总是被教育,不要使用相对路径,这样性能比较差,但是相对路径的问题不仅仅是性能哦,看下面这里例子 这是项目结构 .├── main.php├── t│ ├── t1.php│ └── t2.php└─...

anoty
31分钟前
15
0
x64技术之SSDT_Hook

测试环境: 虚拟机: Windows 7 64bit 过PG工具 驱动加载工具 PCHunter64 系统自带的计算器和任务管理器等 实现思路: 实际思路与win32的思路一样.都是替换SSDT表里边的函数地址.不过微软被搞怕...

simpower
32分钟前
0
0
TreeMap源码分析,看了都说好

一、简介 TreeMap最早出现在JDK 1.2中,是 Java 集合框架中比较重要一个的实现。TreeMap 底层基于红黑树实现,可保证在log(n)时间复杂度内完成 containsKey、get、put 和 remove 操作,效率很...

Java小铺
42分钟前
0
0
协变、逆变

概念 假设 A、B表示类型 ≤ 表示继承关系 f<⋅>表示类型转换 若A ≤ B,则 A是B的子类,B是A的超类 协变、逆变 什么是型变?型变(type variance)允许对类型进行子类型转换。 为了下面讲解先...

obaniu
48分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部