精华内容
下载资源
问答
  • 一款用Object-C语言编写的视频播放器框架
  • Object-c语言特性

    千次阅读 2013-06-15 14:01:23
    Object-C语言由 Brad J.Cox于20世纪80年代早期设计,以SmallTalk为基础,建立在C语言之上。1988年,NeXT获得Object-C的授权,开发出了Object-C的语言库和一个名为NEXTSTEP的开发环境。1994年,NeXT公司与Sun 公司...

    一. Object-C 的前世今生

    Object-C语言由 Brad J.Cox于20世纪80年代早期设计,以SmallTalk为基础,建立在C语言之上。1988年,NeXT获得Object-C的授权,开发出了Object-C的语言库和一个名为NEXTSTEP的开发环境。1994年,NeXT公司与Sun 公司联合发布了一个针对NEXTSTEP系统的标准规范,并命名为OPENSTEP。OPENSTEP在自由软件基金会的实现名称为GNUStep。有Linux下的版本。1996年,苹果公司收购了NeXT公司,并将NEXTSTEP/OPENSTEP定为苹果操作系统下一个主要发行版本的基础。并发布了一个相关开发环境,名为Cocoa,内置了对Obejct C的支持。2007年,苹果公司发布了Object-C 2.0,并在iPhone上使用Object-C进行开发。

    因此,能够编译Object-C语言可以使用GNUStep和Apple公司提供的SDK,而如果要使用到Cocoa的话,只能在Apple公司的SDK上。

    二. 数据类型和表达式

    (1)继承自C 的结据结构与表达式:

    Object-C是基于C语言的,在C语言上进行扩展的。因此它支持C 下,所有的基本数据结构与运算符,下表总结了其支持的基本数据结构与运算符。

     

     

    基本数据结构

    char , short int , unsigned short int , int , unsigned int ,long int , unsigned long int , long long int , usigned long long int , float , double , long double 

    运算符

    + . - , * , / , % , = , == , && , || , & , | , ^ , ~ , << , >> , <= , >= , < , > 

    (2) Object-C新增的数据结构:

    Object-C了一个可以存储任何类型的数据结构 ----  id数据类型。它是一般对象类型,能够存储任何类型的方法。

    三. 流程控制

    Object-C继承了全部C的流程控制,if-else语句, while语句,switch语句,在这里就不细说了。

     

    四. 类与结构

    (1) 简单的类:

    在Object-C中, 一个类分为接口与实现两个部分,分别使用@interface与@implementation来表示。

    @interface用于描述类、类的数据成分以及类的方法;@implementation部分包括实现这些方法的实际代码。

    @interface的一般格式类似于:
    @interface  ClassName : ParentClassName [ < protocol , .. > ] 

    {

    [@protected | @private | @public | @package ]

    memberDeclarations 

    }

    methodDeclarations ;

    @end;

    其中,使用-表示这是一个实例方法, 而使用+表示这是一个类方法。

    默认情况下,类的成员属性都是protected的。在类的声明中也可以使用特定指定其属性。

    @implement的一般格式类似于:

    @implement ClassName

    methodDefinitions 

    @end

    (2) 两个类中的特殊引用:

     在Object-C中,在类中提供了两个特殊的引用,一个是self, 一个是super 。

     self引用 C语言中的this指针一样,指向该类本身,而super则是指向其父类。

    (3) 类继承与扩展

    a) 类继承

    Object-C中定义的所有类都必须继承自同一个父类-- NSObject,也可以继承自某个已经继承了NSObject的类,成为其子类。关于类继承的一些规则与C++语言类似,在这里就不详细描述了。

    b)  类扩展

    Object-C也提供了另外一种在原有类上进行扩展的机制,叫做类扩展。使用这种机制可以在不修改原有类代码的基础上进行类的扩展。经过扩展后的类拥有新的属性或者方法

    (4) 动态特性

    Object-C中一个强大的特性就是它的动态因素。每个对象都保存着它所拥有的一些类属性,包括属于哪个类, 哪个父类,是否响应某个函数等等,因此 Object-C也支持一些处理动态类型的方法。

    也因为Object-C 的动态特性,导致了一些常规的编译时性能优化方法都不用能于Object-C,这也是导致了 Object-C的运行性能劣于类似的对象抽象语言(如C++) ,因此一些底层的操作应使用C++或类似的语言进行封装,由Object-C负责高层逻辑的封装。

         (5) 多重继承的偏方

    由于Object-C不支持多重继承,有一些逻辑类的封装可能无法方便地使用,因此Object-C中提供了协议的机制,一个类可以实现若干的协议,从这个角度实现了类的多重继承。 

    五. 基本的 C 语言特性

    a) import 与 include
    对于Objecy-C与C语言两大阵营的一个分歧在于,Object-C更偏向于使用import并且性能比include更高。 

    b) define

    Object-C支持所有的预编译操作

    c) 指针

    Object-C支持C中的指针操作

     

    六.Object-C的一些原理

    (1)类对象的结构

    每个对象的结构中保存着该类的所有成员属性与一个名为isa的保护成员属性,其记录着该对象所属于的类,当该对象调用函数的时候则通过这个isa的保护成员属性确定其所属的类,从而知道如何调用这个方法。

    (2)类对象的指针属性

    在Object-C中,所有的对象变量都必须以指针的形式定义,并使用alloc函数进行内存分配。而在Foundation框架中,Object-C提供了自动释放池与自动垃圾回收机制去进行内存管理。在Object-C 中, 类对象更像是一种引用,采用引用计数进行自动释放是iphone sdk中一个重要的内容。

    (3)函数调用

    在Object-C中,函数调用都是使用一种消息机制,向特定的类对象发送消息,以达到函数调用的目的。

     

     

    【参考资料】

    1.Programming in Objective-C 2.0 ( second edition ) , Stephen G. Kochen 

    2.The Objective-C Programming Language , Apple Developer Connection

    3.Objective-C item in WIKI


    展开全文
  • object-c语言

    2016-11-28 11:01:44
    很多想开发iOS,或者正在开发iOS的程序员以前都做过Java或者C++,当第一次看到Objective-C的代码时...下面列出Objective-C语言的语法和Java,C++的对比,这样你就会很容易Objective-C的语法是怎么回事了。 先目睹...

    很多想开发iOS,或者正在开发iOS的程序员以前都做过Java或者C++,当第一次看到Objective-C的代码时都会头疼,Objective-C的代码在语法上和Java, C++有着很大的区别,有的同学会感觉像是看天书一样。不过,语言都是相通的,有很多共性。下面列出Objective-C语言的语法和Java,C++的对比,这样你就会很容易Objective-C的语法是怎么回事了。

    先目睹一下Objective-C头文件和实现文件里都有什么:

    头文件:

     

    实现文件, 类似于C++的.cpp文件:


     


    一、函数的对比

    helloworld方法
    Java 语言:

    [cpp] view plain copy
     
    print ?
    1. public void helloWorld(bool ishelloworld) {  
    2. //干点啥  
    3. }  
    public void helloWorld(bool ishelloworld) {
    //干点啥
    }

    C++语言:

    [cpp] view plain copy
     
    print ?
    1. void helloWorld(bool ishelloworld) {  
    2. //干点啥  
    3. }  
    void helloWorld(bool ishelloworld) {
    //干点啥
    }

    Objective-C语言:

    [cpp] view plain copy
     
    print ?
    1. -(void) HelloWorld:(BOOL)ishelloworld{  
    2. //干点啥  
    3. }  
    -(void) HelloWorld:(BOOL)ishelloworld{
    //干点啥
    }

    前面带有减号(-) 的方法为实例方法,必须使用类的实例才可以调用的。对应的有+号, 代表是类的静态方法,不需要实例化即可调用。

     


    二、消息。
    消息的定义:向对象发送信息。
     消息是ios的运行时环境特有的机制。 和C++,Java下的类,或实例调用类或实例的方法类似。我这说的是类似,他们的机制实际上是有很大的差别。
    例子:
    [object  message]

    [cpp] view plain copy
     
    print ?
    1. [object  message:param1 withParameter:param2]  
    2. NSString *string;    
    3. string = [[NSString alloc] initWithString:@"Hello"];    
    [object  message:param1 withParameter:param2]
    NSString *string;  
    string = [[NSString alloc] initWithString:@"Hello"];  


    上面的代码类似于:
    java/c++:object.message()
    java/c++:object.message(param1,param2)
    java/c++:
    string *str ;

    str = new string("Hello");

     

    三、Import
    例子:
    import "Class.h"
    import <Class.h>
    import <director/Class.h>
    这个和C++里的include ,java的import类似

    四 、Property 和Synthesize

    Property定义:@property 声明用于自动创建property属性变量的getter和setter
    Synthesize定义:@Synthesize声明实现了property属性变量的getter和setter。

    例子:
    在  interface:@property dataType variableName
    在  implementation:  synthesiz variableName

     


    四、头文件中的方法

    例子:

    [cpp] view plain copy
     
    print ?
    1. -(returnType)method  
    2. -(returnType)method:(dataType)param1  
    3. -(returnType)method:(dataType)param1 withParam:(dataType)param2  
    -(returnType)method
    -(returnType)method:(dataType)param1
    -(returnType)method:(dataType)param1 withParam:(dataType)param2


    类似于:
    C/C++/Java

    [cpp] view plain copy
     
    print ?
    1. returnType method()  
    2. returnType method(param1)  
    3. returnType method(param1,param2)  
    returnType method()
    returnType method(param1)
    returnType method(param1,param2)
    


    五、self 
    指向自己的指针
    [self method]

     

    类似于:c++/java
    this.method();

    六、继承关系和接口实现

    例子:

    [cpp] view plain copy
     
    print ?
    1. ClassA:ParentA  
    2. ClassA:ParentA<Protocol>  
    3. ClassA <Protocol>  
    ClassA:ParentA
    ClassA:ParentA<Protocol>
    ClassA <Protocol>


    类似于:
    java:

    [cpp] view plain copy
     
    print ?
    1. ClassA extends ParentA  
    2. ClassA extends ParentA implements interface  
    3. ClassA implements interface  
    ClassA extends ParentA
    ClassA extends ParentA implements interface
    ClassA implements interface

    objective-c的 Protocol和c++、java的接口类似。

    七、空指针

    id obj = nil;
    NSString *hello = nil;

    nil相当与Java中的null;

     

    八、 id

     objective-c的和C++里的(void*)类似

    PS:Objective-C和Java一样,都有运行时环境,有内省的能力。Objective-C和java有很多不同的地方,在iOS系统里,Objective-C的内存需要自己管理,添加了ARC机制后编译器帮助了Objective-C  添加release释放的代码。而Java是通过垃圾回收器管理内存的。

     

    展开全文
  • Object-Oriented Programming with Object-C Object-C 进阶书籍---面向对象
  • Object-C 语言使用”消息结构“而非函数调用。该语言是由Smalltalk演化而来,后者是消息型语言的鼻祖。 关键区别在于:使用消息结构的语言,其运行时所执行的代码由运行环境所决定;而使用函数调用语言,由编译器...

    Object-C 语言使用”消息结构“而非函数调用。该语言是由Smalltalk演化而来,后者是消息型语言的鼻祖。
    关键区别在于:使用消息结构的语言,其运行时所执行的代码由运行环境所决定;而使用函数调用语言,由编译器决定。
    Object-C语言对象所占的内存总是分配咋堆空间(heap space),绝对不能分配到栈中。
    如可以这样写:

    NSString *string1 = @"string";
    NSString *string2 = [[NSString alloc]initWithCString:"string " encoding:NSStringEncodingConversionAllowLossy];

    而不能这样写:

    NSString string3;

    有时会遇到 不含*的变量,可能会使用栈空间,这些不是Object-C 对象。 如:
    CoreGraphics框架中的CGRect

    CGRect frame;
    frame.origin.x=0.0f;
    frame.origin.y=0.0f;
    frame.size.width=0.0f;
    frame.size.height=0.0f;

    起结构体定义:

    struck CGRectCGPoint origin;
        CGSize size;
    };

    Object-C将堆内存管理抽象出来,不需要malloc和free来分配或释放内存。运行期环境把这部分工作抽象为一套内存管理架构,名叫”引用计数“;

             参考《编写高质量IOS与OSX代码的52个有效方法》
    
    展开全文
  • Object-C期末复习资料,包含多道题目助力期末复习,成功考试过关
  • Object-C复习资料,包含多道题目全方位复习,期末复习资料
  • Atitit.Object-c语言的新的特性attilax总结 1.1.Object-C语言由BradJ.Cox于20世纪80年代早期设计,1 1.2.Object-C新增的数据结构:1 1.3.类扩展1 1.4.动态特性Object-C中一个强大的特性就是它的动态因素。2 ...

    Atitit. Object-c语言 的新的特性  attilax总结

     

    1.1. Object-C语言由 Brad J.Cox20世纪80年代早期设计,1

    1.2. Object-C新增的数据结构:1

    1.3. 类扩展1

    1.4. 动态特性 Object-C中一个强大的特性就是它的动态因素。2

    1.5. 多重继承的偏方  一个类可以实现若干的协议,从这个角度实现了类的多重继承。2

    1.6. 实体方法   静态函数  减号“-”  加号“+ 声明2

    1.7. 调用方法:Objective-C里面的方法 使用消息(Message)来调用方法。3

     

    1.1. Object-C语言由 Brad J.Cox20世纪80年代早期设计,

    SmallTalk为基础,建立在C语言之上。1988年,NeXT获得Object-C的授权,开发出了Object-C的语言库和一个名为NEXTSTEP的开发环境。1994年,NeXT公司与Sun 公司联合发布了一个针对NEXTSTEP系统的标准规范,并命名为OPENSTEPOPENSTEP在自由软件基金会的实现名称为GNUStep。有Linux下的版本。1996年,苹果公司收购了NeXT公司,并将NEXTSTEP/OPENSTEP定为苹果操作系统下一个主要发行版本的基础。并发布了一个相关开发环境,名为Cocoa,内置了对Obejct C的支持。2007年,苹果公司发布了Object-C 2.0,并在iPhone上使用Object-C进行开发。

    因此,能够编译Object-C语言可以使用GNUStepApple公司提供的SDK,而如果要使用到Cocoa的话,只能在Apple公司的SDK上。

     

    作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙,  EMAIL:1466519819@qq.com

    转载请注明来源: http://blog.csdn.net/attilax

     

    1.2. Object-C新增的数据结构:

    Object-C了一个可以存储任何类型的数据结构 ----  id数据类型。它是一般对象类型,能够存储任何类型的方法

     

    1.3. 类扩展

    Object-C也提供了另外一种在原有类上进行扩展的机制,叫做类扩展。使用这种机制可以在不修改原有类代码的基础上进行类的扩展。经过扩展后的类拥有新的属性或者方法

     

    1.4. 动态特性 Object-C中一个强大的特性就是它的动态因素。

    每个对象都保存着它所拥有的一些类属性,包括属于哪个类, 哪个父类,是否响应某个函数等等,因此 Object-C也支持一些处理动态类型的方法。

    也因为Object-C 的动态特性,导致了一些常规的编译时性能优化方法都不用能于Object-C,这也是导致了 Object-C的运行性能劣于类似的对象抽象语言(C++ ,因此一些底层的操作应使用C++或类似的语言进行封装,由Object-C负责高层逻辑的封装。

     

    1.5. 多重继承的偏方  一个类可以实现若干的协议,从这个角度实现了类的多重继承。

    由于Object-C不支持多重继承,有一些逻辑类的封装可能无法方便地使用,因此Object-C中提供了协议的机制,一个类可以实现若干的协议,从这个角度实现了类的多重继承。 

    1.6. 实体方法   静态函数  减号“-  加号“+ 声明

    类中方法的定义

    减号“-”声明的方法为:实体方法(instance method)

                  加号“+” 声明的方法:类方法(class method);相当于java中的静态函数

     

    @interface Shape : NSObject

    {

           @private

    int var

    @public

    Int color;

    }

    -void) setColor : (int ) color;

    +voidshowMe;

    @end

     

     

    1.7. 调用方法Objective-C里面的方法 使用消息(Message)来调用方法。

    所谓的消息就是一个类或者对象可以执行的动作。消息的格式如下:

    [对象或者类名字 方法名字:参数序列];

    其中“对象或者类名字”被称作消息的接收器(Receiver),)方法名字被称作选择器(Selector)或者关键字(Keyword)。方法名字:参数序列被称为一个消息(Message)Objective-C在编译的过程当中,编译器是会去检查方法是否有效的,如果无效会给你一个警告。但是编译器并不会阻止你执行,因为只有在执行的时候才会触发消息,编译器是无法预测到执行的时候会发生什么奇妙的事情的

     

    1.8. 协议:protocol;类似于java中接口;

     

    1.9. refer

    Object-c语言特性   学步园.htm

    快速了解Object-C语言(1_chase_新浪博客.htm

    转载于:https://www.cnblogs.com/attilax/p/5963495.html

    展开全文
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼据TIOBE index的调查显示,Object-C的流行度现在已经超过了C++,跻身到了最受欢迎编程语言三甲的位置,IOS开发者用的就是Object-C这种面向对象的编程语言,随着IOS开发...
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼据TIOBE index的调查显示,Object-C的流行度现在已经超过了C++,跻身到了最受欢迎编程语言三甲的位置,IOS开发者用的就是Object-C这种面向对象的编程语言,随着IOS开发...
  • object-c

    2012-03-24 08:17:42
    object-c
  • object-c语言简单总结

    2014-09-11 19:40:04
    object-c作为ios编程的基础,它与多数面向对象的语言(C#,JAVA)一样,具有封装,继承,和多态的特性,但是它也有它自己的特性,OC扩展了C语言,使它具备了面向对象的特性,而它还可以使用底层C语言进行编程,调用C语言的方法, ...
  • DOFavoriteButton-object-c 我把原作者swift的代码转为object-c,感谢作者分享优美的点赞效果,目前很多项目还是object-c为主。如果有侵犯作者权利,影响他人权益,可以及时联系我,删除之。尊重他人的权益和创造是...
  • 在windows下编译object-c语言

    千次阅读 2011-12-31 09:28:59
    在windows下编译object-c语言   我的操作系统:windowsxp  一、到:http://www.gnustep.org/resources/sources.html#windows下载开发工具  找资源步骤:(找到Windows点Getthe WindowsInstaller. 在新页面...
  • ObjectC的变量声明和C完全相同:类型,声明对象需使用指针符号*,比如: NSDate *date; NSString *string; NSArray *array; 常量可以用static关键字声明 static NSString *string = @"abc"; 预定义宏 #...
  • C语言中有5种基本类型:char、int、float、double、void,Object-C中仍然可用,并且这些基本类型可以用修饰符unsigned、signed、short、long进行修饰。 整型的每一种都有无符号(unsigned)和有符号(signed)两种...
  • Object-C语言特点

    千次阅读 2012-02-28 10:48:58
    1 减号(或者加号) 减号表示一个函数、或者方法、或者消息的开始. 比如c#中,一个方法的写法可能是: ...private void hello(bool ishello) ...Objective-C ...Objective-C里面没有public和priva
  • Objective-C语言是一种通用的,面向对象的编程语言,Smalltalk风格消息传送到C编程语言。它是使用苹果OS X和iOS操作系统及彼等各自的API, Cocoa 和Cocoa Touch主要的编程语言。  -- Smalltalk风格消息:对象...
  • 2、创建一个Object-C的类:RoundImageView(自定义一个圆角的UIImageView)注意要选择Object-C代码 当创建完成后,Xcode提示下面警告,会提问我们需不需要创意一个Bridge,当然我们选择“Yes”。 3、在...
  • Object-C编程之道

    2015-07-07 18:19:27
    学习前最好有C语言基础和object-c语言基础
  • 1、创建一个Object-C工程:SwiftInObjectC 2、创建一个Object-C的类:SwiftLan(注意选择) 当创建完成后,Xcode提示下面警告,会提问我们需不需要创意一个Bridge,当然我们选择“Yes”。 这样会在工程中看到一...
  • 从这一章开始,Himi将一步一步的带大家走进Iphone4的开发,当然开发语言则不再是Java,而是...有一定的其他语言基础的童鞋可以说学习很快,那么在[Object-C 基础]分类下,主要介绍ObjectC与Java语言之间的区别,一
  • Object-c 一些知识总结

    2019-12-11 14:16:53
    1.类继承要用 : 2.定义接口关键字protocol 3.接口实现用 <>...9. 后缀文件为.m的能包含object-c语言c语言,.mm能包含object-c,c语言和c++语言 10.当在.mm文件中使用c语言时,需要使用:...
  • Object-C Programming

    2017-09-30 18:48:03
    Object-C Programming 前面7章的学习笔记,如果觉得好可以下载原本进行学习
  • 虽然C语言很早就有接触,也利用C++写过PC单机游戏,但是、咳咳,N久没接触了,没办法,写点... 此节简单写下ObjectC中对于调试打印的常用语句:  简单类型的定义如下: view plaincopy to clipboardprint
  • object-c基础教程

    2012-12-28 09:50:40
    本书全面的介绍了Object-c语言的基础知识。全书工分17章和1个目录,内容涵盖面向对象编程的基础知识,继承、复合、内存管理、对象初始化、协议、键/值编码等Object-c语言特性,以及Xcode、Foundation Kit、Appkit等...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,702,624
精华内容 681,049
关键字:

object-c