Ryan的OC学习总结-----1 第一个OC程序

一 OC概述

Objective -C 是一种面向对象的计算机语言。1988 NeXT发布了Objective-C,它的开发环境和类库叫"NEXTSTEP",1994年NeXT与SUN发布了标准的NEXTSTRP系统,取名"OPENSTEP",软件自由基金会OPENSTEP版本叫GUNStep。

1996年苹果公司开始支持NeXT,把NEXTSTEP/OPENSTEP用于Mac OS X操作系统开发,它的版本和开发环境叫Cocoa,使用Objective-C作为基础语言,开发工具Xcode和Interface Builder。

2007年苹果公司推出Objective-C 2.0,Objective-C是Mac OS X的IOS开发的基础语言。

二 Objective-C的特点

1 兼容性

OC可以说是一种个面向对象的C语言,在OC的代码中可以有C和Cpp语言,它可以调用C的函数,也可以通过Cpp对象访问方法。

2 字符串

OC通常不适用C语言风格的字符串。大多数情况下是使用Foundation框架的NSString 类型的字符串。NSString类提供了字符串的类包装,支持Unicode,print风格的格 式化工具等等。它是在普通的双引号字符串前放置一个@符号。(C字符串是const char*)

<span style="white-space:pre">	</span>NSString* str1 = @"My String\n";
<span style="white-space:pre">	</span>NSString* str2 = [NSString stringWithFormat:"%@",@"String"];
3 类

OC的类声明和实现包括两部分:接口部分和实现部分

4 方法

OC中方法不再是"."运算符,而是采用"[]"运算符。这种方法调用也称为:消息发送。7 

5 属性

属性是Objective-C 2.0提出的概念,它是替代对成员变量访问的“读取方法”(getter)和“设定方法”(setter)的手段,为了对类进行封装,一般情况下不直接访问成员变量,而是通过属性访问。

6 协议

OC中的协议类似于Java中的接口或Cpp的纯虚类,只有接口部分定义没有实现部分,即只有h文件没有m文件

<span style="white-space:pre">	</span>@protocol Grapgics
<span style="white-space:pre">	</span>-(viod) onDraw;
<span style="white-space:pre">	</span>@end
7 类别 

OC中的类别是类似于继承机制,通过类别能够扩展父类的功能。

#import "ClassName.h"
@interface ClassName(CategoryName)
//方法声明
@end

三 编写第一个OC程序

1 使用Clang编译器

Clang是一个C Cpp Objective-C 和Objective-C++编程语言的编译器前端。

它采用了底层虚拟机(LLVM)作为后端。它的目标是提供一个GNU编译器套装(GCC)的替代品。

2 Clang 编译器指令

使用文本编辑工具编写HelloWorld.m源程序文件,在终端中采用如下指令编译:

<span style="white-space:pre">	</span>$clang -fobjc-arc -framework Foundation HelloWorld.m -o Prog1
执行编译之后的可执行文件

<span style="white-space:pre">	</span>$./Prog1
3 代码解释

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]){
     @autoreleasepool{
            //insert code here......
            NSLog(@"Hello,World!"); 
      }
      return 0;
}

@autoreleasepool创建一个自动释放内存池,通过它来维护内存释放和回收,对象送autorelease消息后,对象引用计数马上-1,等到自动释放内存池事件周期到达后再-1,因此对象内存释放会延迟。

4 示例:字符串转换

const char* cstr = "Hello, World!";

//C->OC
NSString* nsstr = [[NSString alloc] initWithUTF8String:cstr];
NSLog(@"OC string : %@",nsstr);

//OC->C
const char* cstr2 = [nsstr UTF8String];
NSLog(@"C string : %s",cstr2);



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值