文档章节

黑马程序员-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

没有更多内容

加载失败,请刷新页面

加载更多

ERC1155实践|区块链游戏的平行宇宙和为此而生的Enjin钱包

1 摘要 恩金(Enjin)花了大半年的时间一直在完善ERC-1155这个通证协议,毫不夸张地说,该标准是现有以太坊上最适用于游戏资产的通证标准,将主流游戏中道具涉及到的一切操作经过高度抽象之后...

HiBlock
45分钟前
1
0
Oracle发布开源的轻量级 Java 微服务框架 Helidon

近日,Oracle推出了一个新的开源框架Helidon,该项目是一个用于创建基于微服务的应用程序的Java库集合。和Payara Micro、Thorntail(之前的WildFly Swarm)、OpenLiberty、TomEE等项目一样,...

关注公众号_搜云库_每天更新
51分钟前
1
0
启动线程以及安全终止线程

启动 使用start()方法可以启动线程。 start()方法的含义是告知线程规划器线程已初始化完毕,可以分给这个线程时间片了(执行run()方法)。 安全终止线程 示例代码 import java.util.concurr...

karma123
57分钟前
1
0
Python+OpenCV 图像风格迁移(模仿名画)

现在很多人都喜欢拍照(自拍)。有限的滤镜和装饰玩多了也会腻,所以就有 APP 提供了模仿名画风格的功能,比如 prisma、versa 等,可以把你的照片变成 梵高、毕加索、蒙克 等大师的风格。 这...

crossin
今天
1
0
karabiner json语法

karabiner json语法 to_if_alone 如果同时制定了to, 那么to对应的key必须是非可见字符,例如control,shift或者command, 为什么呢? If to events are specified, to events are released befo...

黄威
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部