黑马程序员--Objective-C之--OC的初步体验

一、OC简介

(一)、Objective-C与C的渊源

Objective-C诞生于 20 世纪 80 年代,由Brad Cox 发明,意在将流行的、可移植的 C 语言与优雅的 Smalltalk 语言结合在一起。

Objective-C 是 C 语言的一个扩展集,它以 C 语言为基础,在语言中添加了一些微妙但意义重大的特性。

苹果公司的 iphone 平台采用 Objective-C 做为 native language 的开发,Objective-C的内核是C语言的,并基于C语言实现OOP的一些特性。

Objective-C是对C语言的扩展,这和C++的前身 Better-c有很大的相似之处,Objective-C的新版本里实现了和Java类似的垃圾回收机制,但基于iphone平台的资源限

制,iphone平台并不支持垃圾回收机制。

(二)、初识Objective-C

1、Cocoa的组成

苹果公司将Cocoa、Carbon、QuickTime和OpenGL等技术作为框架集提供Cocoa组成部分有:

(1)、Foundation框架(有很多有用的,面向数据的低级类和数据结构);

(2)、Application Kit(也称AppKit)框架(包含了所有的用户接口对象和高级类,例如NS……),还有一个支持框架的套件,包括Core Animation和Core Image。

2、NSLog相当于C语言中的printf()

NSLog(@"hello Objective-C");
//注:@是Objective-C在标准C语言基础上添加的特征之一,双引号的字符串前面有一个@,这表示引用的字符串应该作为Cocoa的NSString元素处理 

NSLog(@"are %d and %d different? %@",5,5,boolString(areTheyDifferent));
//注意%@:使用NSLog输出任何对象值时,都会使用这个格式说明

3、BOOL使用8位存储,YES定义为1,NO定义为0,大于1不为YES,跟标准C不同。

若不小心将一个长于1字节的整型值赋给BOOL,则只截取低八位

二、Objective-C常见语法说明

(1)、头文件引用使用 #import “文件名”或者 #import <文件名>的形式以确保每个头文件仅被包含一次;

(2)、类声明以 @interface 类名:继承类 开头,以 @end 结尾,类实现以@implementation 类名 开头,以 @end 结尾;

(3)、实例方法,即成员方法,在方法名前面添加一个减号(-);类方法,在方法名前面添加一个加号(+);

(4)、类方法的调用格式为 [类名 类方法],成员方法调用格式为 [实例名 实例方法],这种模式在ObjC中被称为消息机制,[对象 消息]即给对象发送了一个消息,

产生的效果就是该对象调用了该类中定义的对应的实例方法。

(5)、关键字:关键字基本上都是以@开头的,例如:@public、@private、@end 等

(6)、字符串以@开头

@"hello"    // 这一个是OC 的字符串

"hello"       // 这是是C语言的字符串

(7)其他语法:

a、基本数据类型:char 、int、float、double、BOOL(YES\NO)

b、nil:相当于C语言的NULL ,也就是0

c、基本语句:循环语句(do while 、while、for)、条件语句(if、if-else、switch)

d、注释:// 和/*.......*/

三、OC开发过程(在终端上运行时)

1、编写OC源文件:.m、.c

2、编译:cc -c xxx.m xxx.c

3、链接:cc xxx.o xxx.o -framework Foundation    (只有用到了Foundation框架才需要加上-framework Foundation)

4、运行:./a.out

整体的流程就是:.m(源文件)————编译————》 .o(目标文件)——链接———》a.out(可执行文件)

四、OC 中#import的作用和主头文件

OC中,#import的作用跟C语言中的#include一样,都是拷贝文件的内容,不同的是:#import可以自动防止文件的内容被重复拷贝。

主头文件就是最主要的头文件,名字一般跟框架名称一样,包含了框架中的所有其他头文件,如:Foundation框架的主头文件名称就是Foundation.h,OC中只需要包含

Foundation框架主头文件,就可以使用Foundation这个框架中所声明的所有成员变量、方法以及实现的所有方法。

五、OC中类的设计

1、类的结构:类名、属性、行为

类是对所有对象相同属性的概况。

(1)类名命名的规范:

第一点:类名的第一个字母必须是大写

第二点:不能有下划线

第三点:当出现多个英文单词时,用驼峰标识(即每个单词首字母大写)

(2)完整的写一个类,必须包含类的声明与类的实现

类的声明:@interface 类名

@end

类的实现:@implemention 类名

@end

(3)声明是用于:声明对象的属性、行为

1>、OC中,成员变量的声明必须写在{}之内,方法(行为)的声明必须写在{}之外。

2>、声明成员变量时,不可以对成员变量进行赋值的操作,只能声明。

3>、声明方法(行为)时要注意:只要是OC对象的方法,必须以减号 - 开头,而且OC方法中任何数据类型都必须用小括号()括住。

(4)类的使用的注意点

1>、在OC中,想执行一些行为,就写上一个中括号[行为执行者 行为名称]

2>、利用类来创建对象

3>、类的调用:[所创建的对象  对象方法]

时间: 2024-12-19 15:44:40

黑马程序员--Objective-C之--OC的初步体验的相关文章

【黑马程序员】————简单的OC程序

一.  OC简介 C语言的基础上,增加了一层最小的面向对象语法 完全兼容C语言 可以在OC代码中混入C语言代码,甚至是C++代码 可以使用OC开发Mac OS X平台和iOS平台的应用程序 二.  OC语法预览 1.      关键字 基本上所有关键字都是以@开头 下面列举一些常见的关键字,看一眼就行了,不用去翻资料查找它们的含义 @interface.@implementation.@end @public.@protected.@private.@selector @try.@catch.@

黑马程序员------Objective-C语言概述及语法初体验

一.Objective-C(以下简称OC)简介 Objective-C 是在 C 的基础上,加入面向对象特性扩充而成的通用型高级编程语言,也写作 ObjC .Obj-C 和较少用的   Objective C.Objective-C主要应用于 Mac OS X 和 iOS 系统及其相关 API 如Cocoa.Cocoa Touch.Objective-C 最初源于 NeXTSTEP 系统,尔后由 OS X 和 iOS 继承下来.目前主要支持的编译器有 GCC 与 Clang. 在C语言的基础上,

黑马程序员 03-第二个OC程序

———Java培训.Android培训.iOS培训..Net培训.期待与您交流! ——— 1.代码编写 以下是第二个OC程序: 1 #import <Foundation/Foundation.h> 2 3 int main() 4 { 5     //NSLog输出内容会自动换行 6 //NSL3个字母都是大写 7 //@和""之间不能有空格 8     NSLog(@"第2个OC程序!!!"); 9      10     return 0; 11

黑马程序员——对C和OC的理解

1 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! -------------Java培训.Android培训.iOS培训..Net培训.期待与您交流! -------------Java培训.Android培训.iOS培训..Net培训.期待与您交流! -------

黑马程序员-学习日记(多线程的初步认识)

 ------Java EE培训.Android培训.iOS培训.期待与您交流! ------- 进程:正在执行的应用程序.一个应用程序运行时内存分配的空间.线程:进程中一个程序执行的控制单元,一条执行路径.负责程序的执行顺序.多线程:在java虚拟机启动的时候会有一个java.exe的执行程序,即一个进程.该进程中至少有一个线程负责java程序的运行.而且这个线程运行的代码存在于main方法中. class Demo extends Thread { public void run() { f

黑马程序员_ 利用oc的协议实现代理模式

先说下代理模式是什么吧 定义: 为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象 而代理对象可以在客户端和目标对象之间起到中介的作用. 在看过李明杰老师的课程后,我对代理模式有了最初步的理解,虽然还很浅显 但是也明白了代理模式的 一些作用跟用法.首先使用代理模式可以降低耦合度.大大的增强了代码的弹性. 举个例子,小明想看电影,但是没时间买票 于是就拜托小强去买票 最简单的方式就是 建立一个person类(小明) 一个agent类(代理类) ag

黑马程序员——oc语言学习心得—— 属性声明和赋值

黑马程序员——oc语言学习心得—— 属性声明和赋值 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1,在oc中所有类继承与终极父类Object2,声明字符变量采用N是string  *_xxx 实例变量一般以下划线开头3,在oc中方法以+ -号区分 -号开头是实例方法或对象方法  +号开头是类方法  前置用对象调用 后者用类名调用4,在xcode4以后声明@property 不用在写@snysize  自动生成get.set方法5,属性

【黑马程序员】————OC特有语法

一.点语法 点语法的本质还是方法调用 p.age = 10; // [p setAge:10]; int a = p.age; // [p age]; 二.成员变量的作用域 @public : 在任何地方都能直接访问对象的成员变量 @private : 只能在当前类的对象方法中直接访问(@implementation中默认是@private) @protected : 可以在当前类及其子类的对象方法中直接访问 (@interface中默认就是@protected) @package : 只要处在

黑马程序员-OC内存管理 @property的增强

涉及到内存管理,只读,多线程等很多功能时,setter和getter方法也就没那么简单了:当然@property依然强大,很好用: 1:内存管理相关参数: *:retain:  (如果是oc对象类型),生成的setter会自动release旧值,retain新值: *:assign:(适用于非oc对象)  这个是默认的值 *:copy:release旧值,copy新值: @property (retain) NSString *name; // 同类型的参数不能同时写 // @property

黑马程序员-OC self super isa指针

self指针: self是oc面向对象设计中的一个特殊指针,相当于java中的this,但是比this强大,this只能访问实例对象的相关方法和成员变量,或者说this只代表实例对象: self不仅可以代表实例对象,还可以代表类对象:谁调用当前方法,self就代表谁:如果self用在了以"-"号的方法中,也就是对象方法中,那么就代表实例对象,若果在"+"号开头的方法中,self就代表类对象,因为只有类对象才能调用以"+"号开头的方法: self调