`
hkp2008
  • 浏览: 112351 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

[转载]IOS开发开篇之Objective-C语法基础

 
阅读更多

作者从在吸收众多网友经验基础上,结合自己在IOS开发的经验将对IOS开发技术进行总结,以供后来者学习,更希望借此使自己对IOS开发的深入理解。

      一、Objective-C与C的渊源

      Objective-C诞生于 20 世纪 80 年代,由Brad Cox 发明,意在将流行的、可移植的 语言与优雅的 Smalltalk语言结合在一起。Objective-C 是 语言的一个扩展集,它以 语言为基础,在语言中添加了一些微妙但意义重大的特性。

      苹果公司的iphone平台采用Objective-C做为native language的开发,Objective-C的内核是C语言的,并基于C语言实现OOP的一些特性。Objective-C是对C语言的扩展,这和C++的前身Better-c有很大的相似之处,Objective-C的新版本里实现了和Java类似的垃圾回收机制,但基于iphone平台的资源限制,iphone平台并不支持垃圾回收机制。

 

二、初识Objective-C

 

      1Cocoa

      苹果公司将CocoaCarbonQuickTimeOpenGL等技框架集提供Cocoa成部分有:(1)Foundation框架(有很多有用的,面向数据的低级类和数据结构);(2)Application Kit(也称AppKit)框架(包含了所有的用接口象和高级类,例如NS……)有一个支持框架的套件,包括Core AnimationCore Image

     2NSLog相当于printf()

     NSLog(@"hello Objective-C");

    //注:@Objective-CC言基上添加的特征之一,双引号的字符串前面有一个@表示引用的字符串应该CocoaNSString元素

    NSLog(@"are %d and %d different? %@",5,5,boolString(areTheyDifferent));

    //注意%@:使用NSLog出任何值时,都会使用个格式

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

    若不小心将一个1的整型值赋给BOOL只截取低八位

    Obejective-C1不等于1绝对不要将BOOLYES

 

三、怪异的Objective-C语法结构

   我这里之所以说它的怪异,是相对于习惯其它编程语言(JAVA,C++等语言),下面把它最常见的特色简单说明:

   1、减号(或者加号)

   我们每天都会在IOS开发中见到在方法名前“+”或“─”号,那么这些是什么,怎么这么奇怪?

首先要把以前学习面向对象语言的惯性思维抛去,在Objective-C里面没有publicprivate的概念,你可以认为全是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中被称为消息机制,[对象 消息]即给对象发送了一个消息,产生的 效果就是该对象调用了该类中定义的对应的实例方法;

   下面以一个简单的例子来说明上述语法:

 

Print类.h文件(声明文件)

 

 

#import <Foundation/Foundation.h>

 

@interface Print : NSObject { //Objective-c的所有类都继承于NSObject

    // 成员属性

    NSString *caption;

    NSString *photographer;

}

//在Objective-C 2.0引入了属性合成,相当于之前的get/set方法

@property (nonatomiccopyNSString *caption;

@property (nonatomiccopyNSString *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 allocinit];

    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];

 

    return 0;

}

 

 

 

运行这段代码,结果如下:

 

2011-05-31 11:12:13.715 demo[1471:903] ClassName = "Print Result"

2011-05-31 11:12:13.718 demo[1471:903] Caption = "MyCaption"

2011-05-31 11:12:13.718 demo[1471:903] Photographer = "MyPhotographer"

 

 

原博客地址:http://blog.csdn.net/pjk1129/article/details/6456357

 

 

 

分享到:
评论

相关推荐

    0基础iOS开发学习计划Objective-c语言内容概述.doc

    Objective-C是一种结合了C语言特性和面向对象编程思想的语言,它是苹果iOS和macOS应用开发的基础语言之一。Objective-C诞生于20世纪80年代,由Brace N. Koch等人设计并发展起来。随着iOS和macOS系统的流行,...

    iOS应用开发之objective-C视频讲解(全套)

    资源名称:iOS应用开发之Objective-C视频讲解(全套)   资源目录: 【】1.ios预科班_oc_helloword以及数据类型 【】2.ios预科班_oc_数据类型转换以及类方法变量属性 【】3.ios预科班_oc_内存...

    Objective-C 基础语法

    ### Objective-C基础语法详解 #### 一、Objective-C简介与特性 Objective-C是一种面向对象的编程语言,它是在标准C语言的基础上发展起来的,并且完全兼容C语言。由于其面向对象的特性,Objective-C被广泛应用于苹果...

    ios开发--Objective-C 基础总结-(重点已标识)

    Objective-C 是 iOS 开发的基础,本篇文章主要对 Objective-C 的基础知识进行了总结,特别标注了重点内容,适合初学者快速入门并转向 iOS 平台开发。 首先,我们要理解面向对象编程的基本概念。在 Objective-C 中,...

    objective-c基础教程

    综上所述,《Objective-C基础教程》作为一本介绍Objective-C语言及其在iOS开发中应用的专业书籍,不仅适合初学者入门学习,也对有经验的开发者有着重要的参考价值。通过深入学习本书,读者可以全面掌握Objective-C的...

    IOS应用源码——Objective-C基础教程 随书源码.zip

    本教程的随书源码着重于介绍Objective-C的基础知识,帮助开发者深入理解该语言的语法和特性,从而更好地进行iOS应用的开发。 在“Learn Objective-C Samples”这个压缩包中,包含了多个示例代码,这些示例旨在帮助...

    Objective-C的语法与Cocoa框架.pdf

    Objective-C语言是一种面向对象的编程语言,它是C语言的一个超集,专门为MacOSX和iOS平台的开发设计。作为苹果官方支持的语言,Objective-C拥有悠久的历史和深厚的技术底蕴。它从C语言发展而来,对C语言的结构和语法...

    Objective-C语法快速参考

    由于Objective-C是苹果公司在其操作系统(如macOS和iOS)上开发应用的主要语言之一,因此对于想要从事苹果平台软件开发的开发者来说,掌握Objective-C是非常重要的。 #### 二、Objective-C的基本概念 1. **减号和...

    iOS中js与objective-c的交互

    在iOS开发中,JavaScript与Objective-C的交互是一个常见的需求,特别是在构建混合应用或者利用Web技术增强原生应用功能时。本篇文章将详细讲解如何在iOS中实现JavaScript与Objective-C的双向通信,主要涉及Webview的...

    这是一个基于Objective-C语言的基础案例集 旨在用于给初学者快速了解Objective-C语言的语法 .zip

    Objective-C是一种强大的面向对象编程语言,它在Apple的Mac OS X和iOS操作系统中广泛使用,...通过分析和运行这些示例,初学者可以逐步掌握Objective-C的核心语法和编程习惯,为进一步的iOS或macOS开发打下坚实的基础。

    《Objective-C基础教程》中文版(含源代码)

    《Objective-C基础教程》是一本面向初学者的编程书籍,主要涵盖了Objective-C语言的基本概念、语法和编程实践,尤其适合那些想要踏入iOS应用开发领域的学习者。Objective-C是Apple公司开发的面向对象的编程语言,它...

    Objective-C语法总结

    Objective-C是一种面向对象的编程语言,它在C语言的基础上扩展了一些特性,主要应用于Apple的iOS和macOS平台上的软件开发。XCode是Apple提供的一款集成开发环境(IDE),集成了代码编辑器、编译器、调试工具等,是...

    愉快付,苹果ios开发项目,Objective-C实现

    Objective-C是iOS应用开发的基础,它是一种面向对象的、动态类型的语言,是苹果的Cocoa和Cocoa Touch框架的核心。在这个项目中,开发者将深入学习并运用Objective-C的特性来构建iOS应用程序。 1. **Objective-C基础...

    Objective-C高级编程 iOS与OS X多线程和内存管理_Objective-C_ios_

    《Objective-C高级编程:iOS与OS X多线程和内存管理》是一本深入探讨Apple平台开发中的关键技术的书籍。本书主要围绕Objective-C语言在iOS和OS X操作系统上的应用,特别是针对多线程和内存管理这两个核心主题进行...

    这是一个基于Objective-C语言的基础案例集。旨在用于给初学者快速了解Objective-C语言的语法。.zip

    通过SJT-code文件,初学者可以逐步学习和实践Objective-C的语法和编程技巧,理解面向对象编程的核心思想,并为更复杂的iOS或Mac应用开发打下坚实的基础。 此外,尽管本案例集专注于Objective-C,标签中提到了C#和...

    千锋3G学院-IPHONE_iOS系列课程之Objective-C【分辨率1024*768】

    本课程"千锋3G学院-IPHONE_iOS系列课程之Objective-C"专注于讲解这一核心语言,适合对iOS开发感兴趣的初学者和有志于提升技能的开发者。课程采用1024*768的高清分辨率,确保学习体验清晰舒适。 Objective-C起源于...

    Objective-C 基础语法学习项目

    Objective-C作为iOS应用开发的重要语言之一,掌握其基础知识对于开发者来说至关重要。本文从多个角度介绍了Objective-C的一些基础概念和技术细节,希望能帮助读者更好地理解并运用这些知识。在未来的学习过程中,还...

    Objective-C语法深入浅出-适合作为学习IOS开发的入门材料

    ### Objective-C语法深入浅出-适合作为学习iOS开发的入门材料 #### 一、Objective-C简介 **Objective-C**是一种面向对象的编程语言,它建立在C语言的基础之上,并且是C语言的一个超集。这意味着您可以在Objective-...

Global site tag (gtag.js) - Google Analytics