OBJECT C基础教程

合集下载

Object-C 经典入门教程

Object-C 经典入门教程

Object-C 入门教程分类:Sip&asterisk2009-05-04 16:34 16409人阅读评论(2) 收藏举报大纲o开始吧下载这篇教学o设定环境o前言o编译 hello worldo创建 Classes@interfaceo@implementationo把它们凑在一起o详细说明...多重参数o建构子(Constructors)o访问权限o Class level accesso异常情况(Exceptions)处理o继承、多型(Inheritance, Polymorphism)以及其他面向对象功能id 型别o继承(Inheritance)o动态识别(Dynamic types)o Categorieso Posingo Protocolso内存管理Retain and Release(保留与释放)o Dealloco Autorelease Poolo Foundation Framework ClassesNSArrayo NSDictionary∙优点与缺点∙更多信息开始吧下载这篇教学▪所有这篇初学者指南的原始码都可以由objc.tar.gz下载。

这篇教学中的许多范例都是由 Steve Kochan 在Programming in Objective-C. 一书中撰写。

如果你想得到更多详细信息及范例,请直接参考该书。

这个网站上登载的所有范例皆经过他的允许,所以请勿复制转载。

设定环境▪Linux/FreeBSD: 安装GNUStep为了编译 GNUstep应用程序,必须先执行位于/usr/GNUstep/System/Makefiles/GNUstep.sh 的GNUstep.sh 这个档案。

这个路径取决于你的系统环境,有些是在 /usr, some /usr/lib,有些是/usr/local。

如果你的 shell 是以 csh/tcsh 为基础的 shell,则应该改用 GNUStep.csh。

Object-C——基础语法

Object-C——基础语法

Object-C——基础语法Object-C是在C语⾔的基础上加上了⾯向对象的部分,更好的来开发程序。

⼀、关键字1、基本上关键字都以@开头2、常见关键字如下:@interface、@implementation、@end@public、@protected、@private、@selector@try、@catch、@throw、@finally@protocol、@optional、@required、@class@property、@synthesize、@dynamicself、super、id、_cmd、__block、__strong、__weak、3、字符串也以@开头如:@“hello”⼆、import#import的⽤途:1、跟#include⼀样,拷贝⽂件的内容2、可以⾃动防⽌⽂件的内容被重复拷贝三、 Foundation1、开发iOS程序必备的框架,2、包含很多的API3、此框架包含了很多头⽂件头⽂件的引⽤#import <Foundation/Foundation.h>四、NSLog1、NSLog⽤来接受OC字符串座位参数2、NSLog输出后会⾃动换⾏3、使⽤NSLog 需要#import<Foundation/Foundation.h>五、BoolBool类型的变量有2种取值:YES、NO举例1#import <Foundation/Foundation.h>234 BOOL test(BOOL mybool)5 {6return NO;7 }89int main()10 {11 BOOL b = YES;1213 BOOL b2 = NO;1415 BOOL b3 = 1; // YES1617 BOOL b4 = 0; // NO181920 NSLog(@"%d", test(YES));21return0;22 }六、编译链接⽅法1、编写OC源⽂件:.m、.c2、在终端种使⽤以下过程:①编译:cc -c xxx.m xxx.c②链接:cc xxx.o xxx.o -framework Foundation(只有⽤到了Foundation框架才需要加上-framework Foundation)③运⾏:./a.out。

O_C基础知识

O_C基础知识

objective-c基础教程——学习小结提纲:简介与C语言相比要注意的地方objective-c高级特性开发工具介绍(cocoa 工具包的功能,框架,源文件组织;XCode使用介绍)简介:1. objective-c是C语言的一个扩展集,主要由APPLE公司维护,是MAC系统下的主要开发语言。

个人认为,对于用惯了常用的C,JAVA等语言的人来说,objective-c是一中很另类,非主流的语言。

2. 开发Mac的UI 程序来说,使用的是Cocoa 这个框架,cocoa的组成部分有:foundation和application kit框架。

【foundation框架处理用户界面之下的特性,如数据结构和通信机制;application kit框架包含cocoa的高级特性:用户界面元素,打印,颜色,声音管理,applescript等】3. 我通过这本书的学习:基本掌握了Objective C的语法,基本能看懂别人写的代码,自己也能编写代码;熟悉了开发环境XCode的使用;(包括建立项目,调试,运行,代码管理等)与C语言相比要注意的地方:1. 文件介绍:Objective-C 也使用头文件(header files),后缀为 .h, 但使用 .m(即message, 其他面向对象编程语言也叫method),作为源文件的后缀。

在objective-c中使用#import<>,而不使用#include<>,#import可以保证头文件只被包含一次。

2. 与C一致的地方:数据类型,表达式,各种运算符循环:for, while, do while, break, continue分支:if, else, switch3. NSlog()函数:与printf()类似,想控制台输出信息。

但它增加了一些特性,如时间戳等。

【cocoa对起所有的函数,常量和类型名称都添加了NS前缀。

】4. 双引号的前面的@表示这双引号中的字符串应该作为cocoa的NSString元素来处理。

object-c实现异步的方法

object-c实现异步的方法

object-c实现异步的方法
在Objective-C中,可以使用GCD(Grand Central Dispatch)来实现异步方法。

GCD是一个底层的多线程处理框架,可以用于在后台执行任务,而不会阻塞主线程。

下面是一个使用GCD实现异步方法的示例代码:
```objective-c
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{
// 在后台执行异步任务
// 这里可以放置需要异步执行的代码
// 例如网络请求、耗时计算等
dispatch_async(dispatch_get_main_queue(), ^{
// 在主线程更新UI或执行其他需要在主线程执行的操作
// 这里可以放置需要在主线程执行的代码
// 例如更新UI、处理数据等
});
});
```
在上述代码中,首先创建了一个全局并发队列(`dispatch_get_global_queue`)用于执行后台任务。

然后使用`dispatch_async`方法将需要异步执行的代码块放入队列中。

在后台执行的代码块中,可以进行一些耗时的操作,例如网络请求或者计算。

如果需要在后台执行的代码执行完毕后更新UI或执行其他需要在主线程执行的操作,可以使用`dispatch_async`方法将相关代码块放入主队列(`dispatch_get_main_queue`)中,以确保在主线程中执行。

需要注意的是,在异步方法中更新UI时,要确保在主线程上执行,否则可能会引发线程安全问题。

快速掌握面向对象编程的六个步骤

快速掌握面向对象编程的六个步骤

快速掌握面向对象编程的六个步骤面向对象编程(Object-Oriented Programming,简称OOP)是一种程序设计范式,它将程序中的数据和操作封装成对象,并以对象之间的交互来实现程序的功能。

面向对象编程的思想具有良好的可维护性、可扩展性和代码重用性,因此在现代软件开发中得到了广泛应用。

下面将介绍快速掌握面向对象编程的六个步骤。

第一步:理解对象和类的概念在面向对象编程中,对象是类的实例化结果,它可以具有属性和方法。

类是一种抽象的数据类型,它定义了对象的共同属性和行为。

理解对象和类的概念是掌握面向对象编程的基础。

第二步:分析问题,找出类与对象在面向对象编程中,问题的分析和设计是非常重要的一步。

通过分析问题,我们可以确定需要哪些类和对象来解决问题。

将问题中的实体、属性和操作抽象成类和对象,有助于我们更好地理解问题的本质。

第三步:定义类和属性在面向对象编程中,类是对象的抽象描述,它定义了对象的共同属性和行为。

在定义类时,需要确定类的名称、属性和方法。

属性是类的特征,用来描述类的状态。

可以通过公共、私有或保护等修饰符来控制属性的访问权限。

第四步:定义方法和行为在面向对象编程中,方法是类的行为,用来描述类的操作。

方法是封装了特定功能的代码块,可以通过对象来调用。

定义方法时,需要考虑方法的参数和返回值,以及方法的访问权限。

第五步:创建对象并调用方法在面向对象编程中,对象是类的实例化结果。

通过创建对象,我们可以使用类的属性和调用方法来解决问题。

创建对象时,需要使用类的构造函数,并为对象的属性赋初值。

通过调用对象的方法,可以实现类的功能。

第六步:实现类之间的关系在面向对象编程中,类与类之间可以存在不同的关系,如继承、聚合、关联等。

通过实现类之间的关系,可以实现不同类的功能协作,提高程序的复用性和可扩展性。

总结:通过以上六个步骤,我们可以快速掌握面向对象编程。

首先理解对象和类的概念,然后通过问题分析找出合适的类与对象。

object-c初学者中文教程

object-c初学者中文教程
以下是两个例子: //string1 将被自动释放 NSString* string1 = [NSString string]; //必须在用完后手工释放 NSString* string2 = [[NSString alloc] init]; [string2 release]; 在这里,你可以认为自动释放对象会在当前函数结束的时候被自动释放。 关于内存管理要学的东西很多,但是我们先了解一下其他的概念,这样我们会有更 多的认识。
创建对象
创建对象有两种主要的办法。第一个是之前你看到的: NSString* myString = [NSString string]; 这是一种更加方便自然的方式。通过这种方法,你创建了一个自 动 释 放 (autoreleased)的对象,这一点我们会在后面看到更多的细节。尽管如此,在许多 地方,你可能需要通过手工创建的方式来创建一个对象,如下: NSString* myString = [[NSString alloc] init]; 这是一个嵌套的方法调用。第一个是NSString类本身的alloc方法调用。这是一 个相对低层的调用,它的作用是分配内存及实例化一个对象。 第二个是调用新创建对象的init方法。init方法通常做对象的初始化设置工作, 比如创建实例变量。作为一个类的使用者,你无法知道这些方法的实现细节。 在某些情况下,你可以使用init方法的另外一种版本,这些版本带有输入参数: NSNumber* value = [[NSNumber alloc] initWithFloat:1.0];
在任何情况下,在方括号中代码都意味着你是在给一个对象或者一个类型发送一个 消息(即一个方法调用)。
点操作符
在Mac OS X 10.5中,Objective-C 2.0新增了点操作符的设置器(setter) 和获取器(getter):

学习Objective-C入门教程(全)

学习Objective-C入门教程(全)

学习Objective-C入门教程1,前言相信iPhone不久就要在国内发布了,和我们在国内可以通过正规渠道买得到的iPodTouch一样,iPhone也是一个激动人心的产品。

iPhone发布的同时,基于iPhone的程序也像雨后春笋一样在iTunes里面冒出来。

你将来也许会考虑买一个iPhone,体验一下苹果的富有创意的种种应用;你也许会考虑向iTunes的社区的全世界的人们展示一下你非凡的创意,当然也可以通过你的创意得到一些意想不到的收益。

OK,你也许迫不及待的准备开发了。

但是先等一下,让我们回忆一下最初的电影是怎么拍摄的。

这个很重要,因为和iPhone的开发比较类似。

在最初因为器材比较原始,所以拍摄电影需要很高的技术,那个时候的电影的导演基本上是可以熟练操作摄影器材的人。

随着器材的完善,使用也简单起来。

于是器材的使用不是决定一个电影的质量的唯一的因素,取而代之的是故事或者说电影的创意。

iPhone的开发也是这样。

当然从入门到掌握的过程来说任何事情都是开始比较难,随着掌握的程度的加深,你将会觉得开发iPhone应用程序是一件简单而且轻松的事情,到了那个时候,你的主要的制胜武器就不是开发技术,而是你的创意了。

对于你来说,我在这里写的东西都是有关“摄影器材”也就是介绍如何使用iPhone的平台来开发应用程序。

iPhone的开发语言是Objective-C。

Objective-C是进行iPhone开发的主要语言,掌握了Objective-C的基本语法以及数据结构之后,你需要熟悉一下iPhone的SDK。

笔者很难做到在一篇文章里面把所有的东西都介绍清楚,所以笔者打算分成两个主题,一个是Objective-C,一个是iPhone开发。

本系列将侧重于Objective-C。

当然,任何一种开发语言都无法脱离于运行环境,Objective-C也不例外。

所以在本系列当中也会穿插的介绍一些SDK里面的一些特性,主要是数据结构方面,比如说NSString,NSArray等等。

Objective-C基础教程2

Objective-C基础教程2

8
访问器 Getter and setter
[photo setCation:@”Day at the Beach”]; output = [photo caption];
在Objective‐C中,所有的实例变量默认都是私有的 在大多数情况下,应该使用访问器来获取或设置这些变量的值 Objective‐C中获取器方法的名称默认与实例变量相同,而不必 加上“get” 访问器方法是传统OC1.x的语法
2009年7月30日星期四
23
抽象类 Abstract classes
专门为了被继承而定义出来的类 将实现的负担留给子类去完成 Objective-C中没有明确的语法来标识抽象类 NSObject是一个典型的抽象类的例子 NSObject从不被直接实例化,它是一个泛用的类,单 独使用时没有任何具体能力
Objective-C 2.0编程语言
Lesson 2. 对象、类与消息
2009年7月30日星期四
1
对象的声明 Declaring objects
指针:表示存放对象的内存地址的变量 对象通过指针来声明 NSObject * anObject; 类名 * 对象名(指针名);
2009年7月30日星期四
2
对象的引用
对象通过指针来引用 指针赋值:只改变了指向,并未改变对象的存放位置 NSObject * a; NSObject * b; a = [[NSObject alloc] init]; b = a;
2009年7月30日星期四
3
id与nil
id:表示任意类型的对象或类 id在使用时不需要*符号,因它已被预定义为指针类型 id anObject; nil:表示值为0的空对象 nil对应于其它语言的NULL指针 得益于动态绑定的实现,nil可以响应方法请求而不会 导致异常
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

object-c基础教程
一、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相当于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,则只截取低八位
Obejective-C中1不等于1,绝对不要将BOOL值和YES比较
三、怪异的objective-C语法结构
我这里之所以说它的怪异,是相对于习惯其它编程语言(JAVA,C++等语言),下面把它最常见的特色简单说明:
1、减号(或者加号)
我们每天都会在IOS开发中见到在方法名前“+”或“─”号,那么这些是什么,怎么这么奇怪?
首先要把以前学习面向对象语言的惯性思维抛去,在objective-C里面没有public和private的概念,你可以认为全是public;它只有类方法和实例方法,加号表示类方法,类方法可以直接调用,而不用创建这个类的实例;减号表示实例方法,需要创建这个类的实例对象才可以调用。

比如c#/java中,一个方法的写法可能是:
private void hello(bool ishello)
{
//OOXX
}
用objective-C写出来就是
-(void)hello:(BOOL)ishello
{
//OOXX
}
有过编程经验的人,理解这些应该不难!
2、中括号
中括号可以认为是如何调用你刚才写的这个方法,通常在objective-C 里说“消息”。

比如C#里你可以这么写:
this.hello(true);
在objective-C里,就要写成:
[self hello:YES];
3、NS****
在IOS开发中,经常会遇到NS开头的对象,这个要从乔帮主历史恩怨说起。

当年Steve Jobs和John Scullery与恩怨,乔帮主当年被人挤兑出苹果,自立门户的时候做了个公司叫做NextStep,里面这一整套开发包很是让一些科学家们喜欢,而现在Mac OS用的就是NextStep这一套函数库。

这些开发NextStep的人们比较自恋地把函数库里面所有的类都用NextStep的缩写打头命名,也就是NS****了。

比较常见的比如:
NSLog
NSString
NSInteger
NSURL
NSImage

你会经常看到一些教学里面会用到:
NSLog(@"%d",myInt);
这句话主要是在console里面跟踪使用,你会在console里面看到myInt 的值(在XCode里面运行的时候打开dbg窗口即可看到)。

你还可以看到其他名字打头的一些类,比如CF、CA、CG、UI等等,比如
CFStringTokenizer这是个分词的东东
CALayer这表示Core Animation的层
CGPoint这表示一个点
UIImage这表示iPhone里面的图片
CF说的是Core Foundation,CA说的是Core Animation,CG说的是Core Graphics,UI说的是iPhone的User Interface……还有很多别的,等你自己去发掘了。

四、objective-C常见语法说明
1头文件引用使用#import“文件名”或者#import<文件名>的形式以确保每个头文件仅被包含一次;
2类声明以@interface类名:继承类开头,以@end结尾,类实现以
@implementation类名开头,以@end结尾;
3实例方法,即成员方法,在方法名前面添加一个减号(-);类方法,在方法名前面添加一个加号(+);
4类方法的调用格式为[类名类方法],成员方法调用格式为[实例名实例方法],这种模式在ObjC中被称为消息机制,[对象消息]即给对象发送了一个消息,产生的效果就是该对象调用了该类中定义的对应的实例方法;
5下面以一个简单的例子来说明上述语法:
Print类.h文件(声明文件)
#import<Foundation/Foundation.h>
@interface Print:NSObject{//objective-c的所有类都继承于NSObject //成员属性
NSString*caption;
NSString*photographer;
}
//在objective-C2.0引入了属性合成,相当于之前的get/set方法
@property(nonatomic,copy)NSString*caption;
@property(nonatomic,copy)NSString*photographer;
//类方法
+(NSString*)printName;
@end
Print类.m文件(实现文件)
#import"Print.h"
@implementation Print
@synthesize photographer;
@synthesize caption;
//类方法
+(NSString*)printName
{
return(@"Print Result"); }
@end
Print类使用
#import"Print.h"
int main(int argc,const char*argv[])
{
NSAutoreleasePool*pool=[[NSAutoreleasePool alloc]init];
return NSApplicationMain(argc,(const char**)argv);
//类方法调用
NSLog(@"ClassName=/"%@/"",[Print printName]);
//初始化
Print*p=[[Print alloc]init];
//设置器调用
[p setCaption:@"MyCaption"];
[p setPhotographer:@"MyPhotographer"];
//获取器调用
NSLog(@"Caption=/"%@/"",[p caption]);
NSLog(@"Photographer=/"%@/"",[p photographer]);
[pool drain];
return0;
}
运行这段代码,结果如下:
2011-05-3111:12:13.715demo[1471:903]ClassName="Print Result" 2011-05-3111:12:13.718demo[1471:903]Caption="MyCaption"
2011-05-3111:12:13.718demo[1471:903]Photographer="MyPhotographer"。

相关文档
最新文档