object-c

时间:2024-03-14 08:47:15编辑:coo君

objective c和c的区别

Objective C基本上是在C + Smalltalk基础上衍生出来的,C++就是C++。
除了都是从C语言分化出来的以外,完全没有任何共性。
最大的区别就是Objective C的成员函数调用是基于动态绑定的,类本身并没有限制对象可以有什么函数。
相对于C++类会规定好成员有什么函数。
这使得Objective C的灵活性很大,但是执行效率也很低。
在NeXT系统的时代C++和Objective C都不是那么大众的东西,C++也还没完善,而且那个时代编译器的有优化能力也没现在那么变态。
所以选择Objective C也不是很奇怪的事。
但是现在Objective C的劣势就越来越明显了,所以苹果开发了Swift,而且就内部消息苹果很可能会准备放弃OC。


谁给我介绍一下C#里面的Object类

1、C# 的 object 是所有托管类型的根类,任何一个托管类型都直接或者间接继承 object,另外 object 实际上就是 System.Object。
2、Object类是C#中的基类类型,所有的对象都派生于它,因此,值类型数据可以隐式转换为Object类型,把这种情况称之为装箱;否则,若将一个Object类型的数据转换为值类型,需要强制转换,把这种情况称之为拆箱。


object-c的优点及缺点

Objective-C是非常“实际”的语言。它使用一个用C写成、很小的运行库,只会令应用程序的大小增加很小,和大部分OO系统使用极大的VM执行时间会取代了整个系统的运作相反,ObjC写成的程序通常不会比其原始码大很多。而其库函数(通常没附在软件发行本)亦和Smalltalk系统要使用极大的内存来开启一个窗口的情况相反。 Objective-C的最初版本并不支持垃圾回收。在当时这是争论的焦点之一,很多人考虑到Smalltalk回收时有漫长的“死亡时间”,令整个系统失去作用。Objective-C为避免此问题才不拥有这个功能。虽然某些第三方版本已加入这个功能(尤是GNUstep),Apple在其Mac OS X 10.3中仍未引入这个功能。 另一个问题是ObjC不包括命名空间机制(namespace mechanism)。取而代之的是程序设计师必须在其类别名称加上前缀,时常引致冲突。在2004年,在Cocoa编程环境中,所有Mac OS X类别和函数均有“NS”作为前缀,例如NSObject或NSButton来清楚分辨它们属于Mac OS X核心;使用“NS”是由于这些类别的名称在NeXTSTEP开发时定下。 虽然Objective-C是C的母集,但它也不视C的基本型别为第一级的对象。 和C++不同,Objective-C不支持运算子重载(它不支持ad-hoc多型)。亦与C++不同,但和Java相同,Objective-C只容许对象继承一个类(不设多重继承)。Categories和protocols不但可以提供很多多重继承的好处,而且没有很多缺点,例如额外执行时间过重和二进制不兼容。

c++和c#有什么区别?

抄来的:

C#是用来做应用程序和软件的,优点就是快速开发,有功能强大的.NET FRAMEWORK的支持.
而C/C++是用来做系统程序的,(也能做应用软件,但没有C#方便),优点很多,比其它的高级语言更容易对内存,以及作系统底层相关的开发,比起汇编语言,它具有良好的可移植性.
就看你是想发展哪方面了,还有一点不得不说,C#主要在microsoft Visual stdio.net下得以应用,目前不能在linux以及其它的操作系统下用(因为据我所知C#编译器只是在集成在.NET环境下有,其它的没有听说过),而且microsoft开发出来.net时说.net会牛十年,所以那个时候C#可能就不像现在这样作为市场上的主流开发语言了,它的结果如何谁也不知道,但是C/C++是纯粹就是一门计算机高级编程语言(其实它应该是介于汇编语言和高级语言之间的计算机编程语言),它没有局限在任何的OS,编译器,再加上其它强大的开发能力,是不会被淘汰的,计算机编程语言发展的规则是向更高级,易开发,更方便的方向发展的,不会再发展出一个像C一样的系统底层开发语言,所以学好C/C++还是很必要的,但如果你不想做这些系统底层开发工作,也就不用对C进行太深入地研究了,在编程方面应该对算法以及数据结构进行深入学习.
现在的高级语言如C#,主要把它的语法,也就是编程方法学会,然后对其编程机制进行一些学习就够了,重要的是其它的东西,如学C#更重要是的对.NET FRAMEWORK机制的了解,大部分的高级语言(C/C++/JAVA例外)就是这样,其实并不是特别特别重要,关键是编程思想


object c语言与C++的比较

单一继承:Objective-C不支持多重继承,(同Java和Smalltalk),而C++语言支持多重继承。

动态:Objective-C是动态定型(dynamicaly typed)所以它的类库比C++要容易操作。Objective-C 在运行时可以允许根据字符串名字来访问方法和类,还可以动态连接和添加类。

C++ 跟从面向对象编程里的Simula67(一种早期OO语言)学派,而Objecive-C属于Smalltalk学派。 在C++里,对象的静态类型决定你是否可以发送消息给它,而对Objecive-C来说,由动态类型来决定。Simula 67学派更安全,因为大部分错误可以在编译时查出。而Smalltalk学派更灵活,比如一些Smalltalk看来无误的程序拿到Simualr 67那里就无法通过。从很多方面来看,C++和Objective-C的差别,与其说时技术上的,不如说是思维方式上的。

常用的系统快捷键:复制、粘贴 、剪切option+c,Option+V,Alt+table,Option+N,Shift+Option+N

内核环境:主要由Mach和BSD组成,但它同时也包括了网络协议栈、网络服务、文件系统和设备驱动程序

//声明类

@interface Fraction: Object

{

int numerator; //实例变量

int denominator;

}

-(void) print; //实例方法 instance method

-(void) setNumerator: (int) n: (int[U1] )m; //带参数的成员函数

-(void) setDenominator(int)n;

+(void) makeNumber; //类方法 class method,有点static的味道

@end

//实现类

@implementation Fraction;

-(void) print

{ printf (" %i/%i ", numerator, denominator); }

-(void) setNumerator: (int) n: (int)m

{ numerator = n; Denominator = m; }

-(void) setDenominator: (int) d

{ denominator = d; }

+(void) makeNumber{}

@end

//使用类:选择“Command Line Utility”中的“FoundationTool”项

#import

#import “Fraction.h”

int main (int argc, char *argv[])

{

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];

// Fraction *myFraction = [[Fraction alloc] init];

Fraction *myFraction; //定义指针Fraction对象

myFraction = [Fraction alloc];//分配内存

myFraction = [myFraction init]; //初始化

[myFraction setNumerator: 1:3];

[myFraction setDenominator: 3];

printf ("The value of myFraction is:");

[myFraction print];

printf ("\n");

[myFraction free];

//insert code here...

NSLog(@"Julia is a pretty actress");

[pool release];]

return 0

}


objective c中有私有方法和私有变量吗

objective c中既有私有方法,也有私有变量。先说私有方法,由于Objective-C的动态消息传递机制,OC中不存在真正意义上的私有方法。但是如果你不在.h文件中声明,只在.m文件中实现,或在.m文件的Class Extension里声明,那么基本上和私有方法差不多。至于私有变量是可以通过@private来声明的,例如:@interface Sample : NSObject{ @private NSString *tteesstt;} @property (nonatomic,strong) NSString *hoge;- (void)foo;@end则tteesstt变量是私有的。而属性hoge是默认公有。现在Apple官方文档里是用property比较多,直接定义instance variable少。将property定义到.m的Class Extension也基本上和私有变量差不多。简而言之,将你希望公有的放到.h文件,私有的放到.m文件。在import时只import .h文件(.m文件也是可以import的,但是我们一般不这么做)。

object-c有私有方法吗 私有变量

1.最简单的方法:public static String reverse1(String str){ return new StringBuffer(str).reverse().toString();}2.最常用的方法:public static String reverse3(String s) { char[] array = s.toCharArray(); String reverse = ""; //注意这是空串,不是null for (int i = array.length - 1; i >= 0; i--) reverse += array[i]; return reverse; } 3.常用方法的变形: public static String reverse2(String s){ int length = s.length(); String reverse = ""; //注意这是空串,不是null for (int i = 0; i < length; i++) reverse = s.charAt(i) + reverse;//在字符串前面连接, 而非常见的后面 return reverse; } 4.C语言中常用的方法: public static String reverse5(String orig){ char[] s = orig.toCharArray(); int n = s.length - 1; int halfLength = n / 2; for (int i = 0; i <= halfLength; i++) { char temp = s[i]; s[i] = s[n - i]; s[n - i] = temp; } return new String(s); //知道 char数组和String相互转化 }


objective-c 关键字有哪些

@

看到这个关键字,我们就应该想到,这是Object-C对C语言的扩展,例如@interface XXX。


@interface

声明类



@implementation

实现类



@protocol

声明协议

@optional

与@protocol配合使用,说明协议中的某个或者某几个方法可以不实现



@required

与@protocol配合使用,说明协议中的某个方法或者某几个方法必须实现

@end

与@interface ,@implementation,@protocol配合使用,代表声明或者实现结束


@encode

@encode为编译器宏,它可以将类型转换为相应的字符串。



id

id是指向Objective-C类对象的指针,它可以声明为任何类对象的指针,当在Objective-C中使用id时,编译器会假定你知道,id指向哪个类的对象。与void*是不同的是,void*编译器不知道也不假定指向任何类型的指针。



nil

定义为一个常量,如果一个指针的值为nil,代表这个指针没有指向任何对象。

self

在Objective-C中,关键字self与c++中this是同一概念,就是类对象自身的地址,通过self可以调用自己的实例变量和方法



Super

当子类需要调用父类的方法时,会用到Super关键字.
Super指向的是父类的指针,子类重写父类的方法时,调用父类的方法是一个比较好的习惯。因为当我们不知道父类在该方法中实现的功能时,如果不调用父类
的方法,有可能我们重写的方法会失去该功能,这是我们不愿意看到的情况。



NSNull

NSNull是没有的意思,如果一个字典的值为NSNull,那说明与该值对应的Key是没有值的,例如Key为address,说明与address对应的是值是没有。



self super class public protected private id

[self class] [super class] selector

objective-c runtime reference



标准用法

self = [super init]

new

1 Objective-C有一个特性,就是可以把类当成对象来发送消息,这种用法通常用于新建对像时,例如 XXX *object = [XXX new];



类方法 +

如果想声明属于类而不属于类对象的方法,用+。+用来修饰类的方法,使用+修饰的类方法,是整个类的方法,不属于哪一个类对象,这与C++中的static在类中使用的概念一样,

%@

在NSLog中,使用%@表示要调用对象的description方法。


Objective-C和C的区别

区别如下:1.性质不同Objective-C,通常写作ObjC或OC和较少用的Objective C或Obj-C,是扩充C的面向对象编程语言。C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。2.特点不同Objective-C是非常实用的语言。它是一个用C写成很小的运行库,令应用程序的尺寸增加很小,和大部分OO系统使用极大的VM执行时间会取代了整个系统的运作相反。C语言是一种结构化语言,它有着清晰的层次,可按照模块的方式对程序进行编写,十分有利于程序的调试,且c语言的处理和表现能力都非常的强大。3.创始时间不同Objective-C创始时间是1980年代,C语言创始时间是1972年。参考资料来源:百度百科--Objective-C参考资料来源:百度百科--C

object-c 和C /C++ 比起来有什么优势,为什么手机编程都先学object-c

先学C/C++比了理想

因为我没听说过C/C++功底扎实的人 换工作 或者换语言 会什么困难

如果你有一定的英文能力 能查看 API

根本是很容易上手

而为什么 要先学 O-C
我不知道你这个说法是从那里看到的
如果是培训机构看到的话 这很正常

如果你学习了O-C 可以直接做个软件挂苹果商店就可以来钱1个人就OK

但是C/C++ 1个人想有什么作为 就比较难了 (当然也有不多都是老手 ,O-C上手后如果你的品质和想法 就比较容易成功)
然后是因为现在O-C人才比较紧缺 所以推荐工作也超级容易

嘿嘿希望能帮到你


上一篇:柏研安

下一篇:伪春菜