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八大基本方法

object八大基本方法
object八大基本方法指的是在面向对象编程中常用的八种方法,分别是构造方
法(Constructor)、析构方法(Destructor)、拷贝构造方法(Copy Constructor)、拷贝赋值方法(Copy Assignment)、移动构造方法(Move Constructor)、移动赋
值方法(Move Assignment)、下标方法(Subscript)、转换方法(Conversion)。
首先,构造方法是用来初始化对象的方法,它在对象创建时被调用,可以对对
象的成员变量进行初始化。
析构方法是在对象被销毁时自动调用,用于释放对象占用的资源,例如关闭文件、释放内存等。
拷贝构造方法用于创建一个新对象,并将原对象的值复制给新对象。
拷贝赋值方法用于将一个对象的值赋给另一个对象,通常用于对象之间的赋值操作。
移动构造方法和移动赋值方法是C++11引入的特性,用于将一个对象的资源所有权转移给另一个对象,提高了对象的性能。
下标方法用于访问对象中的元素,可以通过下标来访问对象的成员变量。
转换方法用于将对象转换为其他类型的对象,可以通过转换方法实现对象之间的类型转换。
这八种方法在面向对象编程中起着非常重要的作用,可以帮助我们更好地管理
对象的生命周期、资源的分配和释放,提高代码的可读性和维护性。
合理地使用这些方法可以提高程序的性能和可靠性,减少内存泄漏和资源泄漏的风险。
因此,熟练掌握这八大基本方法对于编写高质量的面向对象程序是非常重要的。
希望以上内容能够满足您的要求,如有其他问题,欢迎继续咨询。
object-c基础教程

Translations: English | Chinese 开始吧 o 下载这篇教学 o 设定环境 o 前言o 编译 hello world 创建 Classes o @interface o @implementation o 把它们凑在一起详细说明... o 多重参数 o 建构子(Constructors) o 访问权限 o Class level access o 异常情况(Exceptions)处理继承、多型(Inheritance, Polymorphism)以及其他面向对象功能 o id 型别 o 继承(Inheritance) o 动态识别(Dynamic types) o Categories o Posing o Protocols 内存管理 o Retain and Release(保留与释放) o Dealloc o Autorelease Pool Foundation Framework Classes o NSArray o NSDictionary 优点与缺点更多信息o所有这篇初学者指南的原始码都可以由objc.tar.gz 下载。
这篇教学中的许多范例都是由 Steve Kochan 在 Programming in Objective-C. 一书中撰写。
如果你想得到更多详细信息及范例,请直接参考该书。
这个网站上登载的所有范例皆经过他的允许,所以请勿复制转载。
oLinux/FreeBSD:安装 GNUStep 为了编译 GNUstep 应用程序,必须先执行位于/usr/GNUstep/System/Makefiles/GNUstep.sh 的GNUstep.sh 这个档案。
这个路径取决于你的系统环境,有些是在 /usr, some /usr/lib,有些是/usr/local。
如果你的 shell 是以 csh/tcsh 为基础的 shell,则应该改用 GNUStep.csh。
GObject学习手册

本文转自: /User/AT91RM9200/Article/9405_1.htm Ryan McDougall(2004) translated by neowillis from/gtk-list@/msg17190.htm
-4-
GObject 学习
{ self->m_a = a; g_print (“Method1: %d\n", self->m_a);
} void some_object_method2_impl (SomeObject *self, gchar* b) {
self->m_b = b; g_print ("Method2: %s\n",self->m_b); } b. 实现所有公有方法。 实现虚方法时,我们必须使用“GET_CLASS”宏来从类型系统中获取到类对象,用以调 用虚函数表中的虚方法。非虚方法时,直接写实现代码即可。 /* 公有方法 */ void some_object_method1 (SomeObject *self, gint a) { SOME_OBJECT_GET_CLASS (self)->method1 (self, a); } void some_object_method2 (SomeObject *self, gchar* b) { SOME_OBJECT_GET_CLASS (self)->method2 (self, b); } void some_object_method3 (SomeObject *self, gfloat c) { self->m_c = c; g_print ("Method3: %f\n", self->m_c); } c. 实现初始化/销毁方法。 在这两个方法中,系统传入的参数是指向该对象的泛型指针(我们相信这个指针的确指向 一个合适的对象),所以我们在使用它之前必须将其转型为合适的类型。 /* 该函数将在类对象创建时被调用 */ voidsome_object_class_init(gpointer g_class, gpointer class_data) { SomeObjectClass *this_class = SOME_OBJECT_CLASS (g_class);
Objective-C快速入门视频教程-第四讲 Objective-C语言的面向对象特性

概述
Objective-C作为一种面向对象的编程语言,具有面向对象 的基本特征,即:封装、继承和多态。主要介绍ObjectiveC中有关面向对象基本概念:类、对象、方法和属性等。
第3页
Objective-C中的类
类是Objective-C中的一种重要的数据类型,是组成 Objective-C程序的基本要素。Objective-C的类声明和实现 包括两个部分:接口部分和实现部分。 @interface Song: NSObject { … … } … … @end @implementation Song … … @end
iPhone与iPad应用开发课程 精通Objective-C语言
第四讲 Objective-C语言的面向对象特性 主讲人:关东升 eorient@
主要知识点
• Objective-C中的类 • 方法和消息 • 访问成员变量 • 属性 • 构造方法 • 实例成员变量作用域限定符 • 类变量和类方法
第8页
消息发送
对于方法的调用通常也不称之为调用,而是称为发出消息, 操作符号不是“.”而是“[…]”,如下所示: [myObject insertObject: ojb1 atIndex:0]; 即向myObject对象发出一个消息insertObject:atIndex:。 而在实际使用时候这两种叫法都会用,这不是严格划分。
第4页
接口部分
使用关键字@interface,主要定义了类名、继承的父类、实 现的协议、成员变量和方法等信息。下面的代码是Song类的 接口部分声明。 @interface Song : NSObject { NSString *title; NSString *artist; long int duration; } - (void)start; - (void)stop; - (void)seek:(long int)time; @end
OBJECTIVE C知识点总结

/*1.类是一组具有相同特性和行为的某一类事和物的集合.2.对象是类的实例化.3.计算机语言的目的:模拟和解决生活中的问题.4.#include和#import的区别?答:(1)#import是oc中导入头文件的关键字,而且只需导入一次就行.(2)#include是c\c++导入头文件的关键字,include导入头文件容易引起交叉编译.5.创建对象的语法:(1)类名*对象名=[[类名alloc]init];(2)类名*对象名=[类名new];6.oc中的方法:(减号为实例方法,加号为类方法)-|+(返回类型)方法名:参数列表{//方法体}(1)器就是方法的意思;(2)void意思是无返回值;Student为类名,意思为有Student类型的返回值(3)with后面的name是属性的名称,newName 是属性name的参数名称初始化器:-|+(Student*)initWithName:(NSString*)newName{self=[super init];//继承父类NSObject 的init(初始化)方法self->name=newName;return self;}便利构造器:-|+(Student*)studentWithName:(NSString*)newName{Student*student=[[Student alloc]init];//实例化变量student=newName;return student;}7.属性#interface@property(nonatomic,retain)NSString *name;(声明)等价于:(setter方法:设置器)-(void)setAge:(int)newAge{age=newAge;}#implemention@synthesize name;(合成)等价于:(getter方法:访问器)-(int)getAge{return age;}8.点语法(1)=@"liming";等价于:[stu setName:@"liming"];(2)NSlog(@"%@",[]);等价于:NSlog(@"%@",[stu getName]);9.property有关语法(1)readwrite是可读可写特征;需要生成getter 方法和setter方法.(2)readonly是只读特性只会生成getter方法不会生成setter方法.(3)assign赋值特性,setter方法将传入参数赋值给实例变量.(4)retain表示持有特性,setter方法将传入参数先保留,再赋值,并且变量retaincount+1;(5)copy通过copy将对象复制一份,之前的对象会释放.(6)nonatomic表示单线程安全.(7)atomic表示多线程安全.10.变量作用域(1)@protected表示只有该类和其子类可以访问该类的变量.(2)@public表示无论是自身还是子类的对象,还是其它类型的对象均能访问该类的变量.(3)@private表示只有该类本身的对象可以访问该类的变量.11.面向对象三大特征:(1)封装:隐藏内部实现,稳定外部接口.(2)继承:子类继承父类的所有非私有的方法和属性.(3)多态:不同类型的对象,对同一方法名的不同响应.注意:要点一:oc中不允许多继承(一个类有多个父类),但允许多重继承(一个类的父类也拥有其自身的父类).要点二:一个类调用方法时,先从本类方法找,找不到再从父类找,一直往上直到找到NSObject类中.12.self:是指向当前对象的指针.super:调用父类的方法.id:是一个指向任何一个继承了NSObject类的对象.13.开闭原则和里氏替换原则(1)开闭原则(OCP Open Closed Principle):核心是:对扩展开放,对修改关闭.改变一个软件时,应该通过扩展的方式来改变软件,而不应该修改原有的代码来实现变化.(2)里氏替换原则(LSP Liskov Substitution Principle):(is A)原则:任何基类可以出现的地方,子类一定可以出现.a.继承必须确保超类所拥有的性质子类中仍然成立.b.子类对象总是可以替换父类对象.14.内存管理(1)黄金法则:凡是对象使用了alloc,new,copy和retain,那么必须有相对应的release和autorelease.引用计数机制:对象创建后,运行时系统通过对象维护的一个计数器来描述有多少个其他对象在使用自己,当计数器为0时,释放该对象占用的内存空间(该对象调用dealloc方法)。
VS2015使用教程(使用VS2015编写C语言程序)

VS2015使用教程(使用VS2015编写C语言程序)1) 创建项目(Project)在VS2015 下开发程序首先要创建项目,不同类型的程序对应不同类型的项目,初学者应该从控制台程序学起。
打开VS2015,在上方菜单栏中选择“文件--> 新建--> 项目”:选择“Win32控制台应用程序”,填写好项目名称,选择好存储路径,点击“确定”按钮即可。
如果你安装的是英文版的VS2015,那么对应的项目类型是“Win32 Console Application”。
另外还要注意,项目名称和存储路径最好不要包含中文。
点击“确定”按钮后会弹出向导对话框:点击“下一步”按钮,弹出新的对话框:先取消“预编译头”和“安全开发生命周期检查”这两个选项,再勾选“空项目”,然后点击“完成”按钮就创建了一个新的项目。
感兴趣的读者可以打开E 盘,会发现多了一个cDemo文件夹,这就是整个项目所在的文件夹。
2) 添加源文件在“源文件”处右击鼠标,在弹出菜单中选择“添加-> 新建项”,如下图所示:在“代码”分类中选择C++文件(.cpp),填写文件名,点击“添加”按钮就添加了一个新的源文件。
小小的提示:C++是在C语言的基础上进行的扩展,C++已经包含了C语言的所有内容,所以大部分的IDE 只有创建C++文件的选项,没有创建C语言文件的选项。
但是这3) 编写代码并生成程序打开hello.c,将本节开头的代码输入到hello.c 中,上图是输入完成以后的效果。
注意:虽然可以将整段代码复制到编辑器,但是我还是强烈建议你手动输入,我敢保证你第一次输入代码会有各种各样的错误,只有把这些错误都纠正了,你才会进步。
本教程后续章节还会给出很多示例代码,这些代码一定要手动输入,不要复制后运行成功了就万事大吉。
编译(Compile)在上方菜单栏中选择“生成--> 编译”,就完成了hello.c 源文件的编译工作。
如果代码没有错误,会在下方的“输出窗口”中看到编译成功的提示:编译完成后,打开项目目录(本教程中是E:\cDemo\)下的Debug 文件夹,会看到一链接(Link)在菜单栏中选择“项目--> 仅用于项目--> 仅链接cDemo”,就完成了hello.obj 的链接工作,如下图所示:如果代码没有错误,会在下方的“输出窗口”中看到链接成功的提示:本项目中只有一个目标文件,链接的作用是将hello.obj 和系统组件(专业讲是静态链接库)结合起来,形成可执行文件。
学习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等等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
创建对象
创建对象有两种主要的办法。第一个是之前你看到的: 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):
photo.caption = @”Day at the Beach”; output = photo.caption; 两种语法你可以使用任何一种,但是在一个项目中最好只使用一种。同时,点语法 只能使用在设置器(setter)和获取器(getter)上,而不能用于普通方法。
内存管理基础
当你为Mac OS X编写应用程序时,你可以选择允许垃圾回收。这意味着如果不是 在特别复杂的情况下,你不用考虑内存管理。
然而,你并不会总是工作在支持垃圾回收的环境中。这样的话,你就需要知道一些 基本概念。
如果你通过手工alloc的方式创建一个对象,之后你需要release这个对象。同样, 你也不能手工释放(release)一个能自动释放(autoreleased)的对象,因为这将会 使你的应用程序崩溃。
cc很好,谢谢大家。
ObjectiveC
Objective‐C是开发Mac软件的主要编程语言。如果你了解一些面向对象的基本概念和 C语言,那么会对你学习Objective‐C有很多帮助,如果你不了解C,那么建议你先读一下 C 指南。
这篇指南由Scott Stevenson编写并做图。
方法调用
为了尽快开始,让我们先看一些例子。
在花括号里面声明了两个实例变量:caption和photographer。都是NSString 类型,实例变量可以是任何对象类型,包括id类型。
最后,@end符号结束类的声明。
添加方法
让我们给实力变量添加一些获取器(getter) #import <Cocoa/Cocoa.h>
@interface Photo : NSObject { NSString* caption; NSString* photographer;
访问器
在Objective‐C中,所有的实例变量默认都是私有的,所以,在大多数情况下,你应 该使用访问器来获取或设置这些变量的值。现在有两种语法。下面的是传统的1.x语法:
[photo setCation:@”Day at the Beach”]; output = [photo caption]; 第2行代码不是直接读取实例变量。实际上它是在调用名为caption的方法。在 Objective-C中,大多数情况你不用在获取器(getter)前面添加一个”get”前缀
嵌套调用
在许多编程语言中,嵌套的方法或函数调用像是这样的: function1(function2()); function2的返回值做为输入参数传递给function1。在Objective-C中,嵌套 调用看上去像是这样的: [NSString stringWithFormat:[prefs format]]; 要尽量避免在一行语句中进行两层以上的嵌套,这样会使代码的可读性降低。
多输入参数的方法
一些方法需要多个输入参数。在Objective-C中,一个方法的名字可以被拆分成几 段,在头文件中,多输入参数的方法声明看上去像是这样的:
-(BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;
你可以这样调用这个方法: BOOL result = [myData writeToFile:@”/tmp/log.txt” atomically:NO]; 这些不是命名参数。在运行时环境中,该方法的名字实际上是 writeToFile:atomically:
你还可以调用类的方法,这也是创建一个对象的办法。在下面的例子里,我们调用 了NSSting类的string方法,用来返回一个新的NSString类的对象。
id myObject = [NSString string];
id类型意味着变量myObject可以是任意类型的对象。所以,当你编译这段代码时, 它的实际类型以及它所实现的方法编译器是不知道的。
}
@end
这段代码以@implementation和类的名字开始,并且像接口一样,有一个@end。 所有的方法必须写在这两条语句之间。
如果你写过代码,就会觉得上面的获取器看上去很熟悉,所以我们还是来看一看设 置器,它们需要多一点解释。
- (void) setCaption: (NSString*)input {
调用一个对象的方法的基本语法是这样的: [object method]; [object methodWithInput:input];
方法可以有返回值: output = [object methodWithOutput]; output = [object methodWithInputAndOutput:input];
@end
设置器不需要有返回值,所以我们指定返回值是void。
类实现
现在,我们从获取器(getter)开始,来创建一个类的实现。 #import "Photo.h"
@implementation Photo
- (NSString*) caption { return caption;
}
- (NSString*) photographer { return photographer;
#import <Cocoa/Cocoa.h>
@interface Photo : NSObject { NSString* caption; NSString* photographer;
}
- (NSString*)caption;
- (NSString*)photographer;
@end
现在,我们来添加设置器(setter):
#import <Cochoto : NSObject { NSString* caption; NSString* photographer;
}
- (NSString*)caption; - (NSString*)photographer;
- (void) setCaption: (NSString*)input; - (void) setPhotographer: (NSString*)input;
[caption autorelease]; caption = [input retain]; }
- (void) setPhotographer: (NSString*)input {
[photographer autorelease]; photographer = [input retain]; }
在我们的例子里,很显然对象的类型是NSString,所以我们可以改变对象的类型 声明:
NSString* myString = [NSString string]; 现在,这就是一个NSString类型的变量了,如果我们在这个对象上调用NSString 类型对象不支持的方法,编译器就会发出警告。
注意:在对象类型的右面有一个星号(*),在Objective-C中,所有的对象变量 都是指针类型。id类型已经被预定义为指针类型,所以不需要加一个星号。
每一个设置器都要处理两个变量,第一个是当前引用的对象,第二个是新输入的对 象。在带有垃圾回收机制的环境中,我们可以直接设置成新的值。
- (void) setCaption: (NSString*)input {
caption = input; } 但是,如果你不能使用垃圾回收,你需要release旧的对象,并且retain新的对 象。 释放一个对象的引用实际上有两种方法:release 和 autorelease。标准的 release会立刻释放对象的引用。autorelease会等一会儿才释放,但是引用实际上 会一直存在,直到当前方法结束(除非你添加自定义的代码来明确的改变它)。 在设置器里面使用autorelease方法会更加安全一些,因为要改变的变量的新旧两 个值可能指向的是同一个对象。而你可能不希望立刻释放实际上你要保留的对象。 现在,这看上去有点让人迷惑,但是随着你的不断学习,你就会有更多的认识。所 以,现在不必彻底的理解这些。