objective-c软件 objective-c 0基础 - 电脑|办公 - 电脑办公-杀毒安全-网络-V3学习网
微商网
 
 
导航:首页 |电脑|办公|正文

objective-c软件 objective-c 0基础

时间:2021-04-16 09:54:38
objective-c基础教程用的什么软件?哪里可以下载?针对你对1楼的追问。1 iOS应用和程序基本是完全不同的两个方向,C的基础肯定要有,任何语言都需要,看似用处不大,但编程思想很重要。2、Xco
作者:

objective-c软件

objective-c基础教程用的什么软件?哪里可以下载?

针对你对1楼的追问。

1.iOS应用和程序基本是完全不同的两个方向,C的基础肯定要有,任何语言都需要,看似用处不大,但编程思想很重要。

2、Xcode是软件开发工具,苹果官方提供的。

cocos2d是一款开源的游戏开发框架,可以帮助开发者很快很方便的实现各种功能。

2.做游戏很赚钱,轻松过万,牛一些的好几万,而且很缺牛人。

但很累。

并且做游戏使用C++写的。

因为C++可以在多个平台运行。

开发工具叫cocos2d-x3.C语言自学的书,C语言入门经典。

OC没看过书,看也没用。

浪费时间。

最后,就是你零基础,证明你真的不擅长这方面,你可以认为你很聪明,并且很努力,但是不要妄想和有捷径的人比,他们很聪明并且很努力....so~花点钱,去个学校学习一下,否则你就是浪费时间!

用C/C++/Objective

一般开发中需要用到库这个概念,也就是用苹果公司已经写好的代码来构建自己的软件。

但是这个库使用Objective-c写的,所以很大程度上就局限了使用的语言。

1.C语言,纯粹用c写的其实不多的,因为现在开发一般都是面向对象,而c++/Objective-c支持面向对象,所以在整体上而言用c++/Oc比较好,至于为什么要使用面向对象呢,构建方便,复用等好多原因的。

当然一些核心上的东西还得c写,为什么呢,效率,譬如编码的转换等。

2.c++ 其实c++是非常好的,但是由于库的原因,写UI等不方便,用的不多了就,当然啦,譬如cocos2d-x是用c++写的,所以由它构建的软件也基本上就是它了。

3.Objective-c 由于UIkit ,CFFramework...cocos2d for iphone 等等框架都是该语言写的,所以默认就是该语言了。

最后,语言本身也并无什么好比较的,只是工具而已,希望能帮到你。

objective

Objective-c是苹果平台(包括移动和桌面)的标准开发语言,目前只有苹果一家在用,而且也只能为苹果所用。

obj-c与C++同是C语言的一个超集,但obj-c比C++要简单的多,虽然语法看上去很怪异,但是使用一段时间之后便会发现它与比C++相比有那么多方便的东西,比如内存管理、动态调用等等,虽然运行效率上不如C++,但是在开发和维护效率上却是比C++快许多。

ios 为什么说objective

Aaron Hillegass 是知名的 Objective-C 开发者和布道者,他于 90 年代在 NeXT 公司工作,后来专注技术布道,是 Big Nerd Ranch 的创始人兼 CEO。

他撰写了多本 Objective-C 书籍,在苹果发布 Swift 后,目前他开始将布道重心转向 Swift。

在 6 月 8 日举办的 AltConf2015上,他向与会者做了《给 Objective-C 的悼词》的演讲,回顾了 Objective-C 的发展和它的影响,但在最后他话锋一转,说明了为什么 Objective-C 没有真正死亡。

回顾 Objective-C 的发展历程 要回顾 Objective-C 真正的起源,我们需要从 1962 年谈起。

在那个连互联网都没有的年代,在 NR 计算中心的两个小伙为了改善 ALGOL,创造了 Simula,并在 1967 年发布了 Simula-67. 它第一次使用了点式语法,从此你使用对象方法就用小圆点去调用了。

稍后,Smalltalk 团队开始打造另外一个面向对象语言,到 1980 年他们推出了标签:变量风格的语言 Smalltalk。

Smalltalk 做了很多超前的事情,它不仅仅是一个语言,还包括一个完整的操作系统。

方括号也是它引入到编程语言中的,Smalltalk 使用它处理变量,Objective-C 则用它来放置消息。

研发 Smalltalk 的那群人后来去了施乐帕洛阿图研究中心,继续鼓捣他们感兴趣的东西。

Smalltalk 十分超前,对后来者有很大的影响,但它的问题在于,使用 Smalltalk 需要完全抛弃以前的东西,并需要你成为它的一部分,这无论对于开发者还是用户都不是很友好。

后来一个叫 Brad Cox 的人来了,他认为与其进行语言革命,不如进行渐进式的创新。

他拿一个大家熟悉的系统级编程语言,然后给它加上面向对象的 Smalltalk 风格的消息传递,这就是 Objective-C 的由来。

Brad Cox 在他的书籍《Object-Oriented Programming: An Evolutionary Approach》中解释了这些。

Brad Cox 和 Objective-C 的联合创始人 Tom Love 为这门语言创建了公司以专门支持它,这就是 Stepstone。

但是,Stepstone 版本的语言仅仅是一个C语言的预处理器或者说编译器,它会将消息传递转换为C语言的函数。

此时它还没用引用计数等功能,其标准库为 ICpak 210. 此时它也并不叫 Objective-C,等到 NeXT 从 Stepstone 购买下这个语言的商标时,它才改名叫Objective C,并且加入了点式语法。

NeXT 将 Objective-C 作为它编写 GUI 的工具,毫无疑问这是物尽其用的,因为 GUI 天生适合使用面向对象的语言来编写GUI 里的控件就是一个一个的对象。

此时 Scott Ritchie、Steve Naroff、Blaine Garst 等人出来拯救世界。

他们给 Objective-C 带来了更多的特性和更好的性能。

诸如 blocks、动态机制、缓存机制等特性都是他们创造的。

Objective-C 的先进性 由于引入了 Smalltalk 中的很多理念和特性,在那个年代,Objective-C 在很多方面很先进,甚至超越时代。

Objective-C 的一个美妙的地方是它的动态特性。

这给我们带来很多好处。

比如在很早的时候它就有内省(introspection),但直到 Java 出了这个 API 并给它命名之后我们才知道它是什么;然后是弱类型,最初所有变量的类型都是 id 对象,后来才称这种类型为 NSArray*,它对于 unarchiving 和 target-action 模式很有用;然后是 isa-swizzling,faulting 机制就是利用它来提高性能;以及在运行时创建类的能力,虽然一般编程中很少用到,但 KVO 正是依靠了这个机制。

另外还有一个特性现在人们认为非常好,但当时认为简直是疯了,那就是 category。

它改变了我们编程的方式,以及对 frameworks 的看法,不过因为它违反了当时人们认为的面向对象编程的教条,当时 Java 派的人不是很喜欢它。

对 Objective-C 的改进 自 Objective-C 被 NeXT 收购后,介绍 Objective-C 的书籍纷纷出炉。

当时有《Objective-C: Object-Oriented Programming Techniques》和《Object-Oriented Programming and the Objective-C Language》,后者有 NeXT 出品,是当时介绍 Objective-C 最好的书籍。

当 NeXT 意识到语言中存在的问题后,它们开始重写 OpenStep 操作系统,这次他们给 Objective-C 加上了引用计数、前缀、更多的类型等。

OpenStep 还被授权给 Sun 公司使用,作为交易的一部分,OpenStep 需要以某种方式开源,于是他们创建了 GNUstep 项目,这是 OpenStep 的一个实现,继承了 OpenStep 的大部分 API。

但是,改进后的 Objective-C 仍然存在问题,就是它的基类很脆弱,里面定义了大量的实例变量,导致后期无论是对基类进行修改还是另建基类都很困难。

Objective-C 2.0 的出现解决了这个问题,它还添加了快速枚举、GC 以及后面的 ARC 等。

但是,有些历史遗留问题仍然没有得到解决。

Swift 的出现 但是,无论如何改进,改变不了 Objective-C 已经存在几十年的事实,有些历史遗留问题无法解决,有些语言特性也已经落后时代。

只有另起炉灶才能彻底消灭这些问题,而苹果陷入有魄力去做这一件事。

Swift 相对于 Objective-C 是一个很大的进步,它的C语言风格更少,更加现代,因此我们可能会损失一些底层的编程能力,但它也给开发者工具带来了更多创新的可能性,比如 Playgrounds。

但 Swift 也并不是毫无缺点,为了保持和 Objective-...

如何在Windows上编译Objective

方法如下:1、安装GNUstepGNUstep Windows Installer提供了Windows平台下的Object-C的模拟开发环境,一共有四个软件包,其中GNUstep System和GNUstep Core是必装的,GNUstep Devel和Cairo Backend是选装的。

只安装前两个就够了。

2、编写Objective-C代码安装完成后,在开始菜单里的GNUstep选项里执行shell,就能打开命令行。

直接在Windows里进入C:/GNUstep/home/Administrator(我的是Administrator,可能有的不一样)目录,在这里用你喜欢的工具(现在UltraEdit和Notepad++编辑器好像可以代码高亮)编写Object-C程序。

如:HelloWorld.m#import int main (int argc, const char *argv[]) {NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];NSLog(@"Hello World!");[pool drain];return 0;}3、配置环境变量这一步很重要。

GNUstep.sh是用来设置GNUstep开发环境变量的,如果没有执行,就会有很多头文件,库文件,命令找不到在一个目录里写好了源代码以后,编写一个make配置文件,名字必须叫GNUmakefile,内容是include $(GNUSTEP_MAKEFILES)/common.makeTOOL_NAME=TestTest_OBJC_FILES=HelloWorld.minclude $(GNUSTEP_MAKEFILES)/tool.make然后就是make命令运行成功就可以看到新增了一个obj目录,里面就有你要的可执行文件和.o文件,就完成了。

Objective-C和C的区别

又可用来开发应用软件,已成为一种通用程序设计语言。

另外C语言具有强大的图形功能。

只有32个保留字(reserved keywords),使变量、函数命名有更多弹性。

部份的变量类型可以转换。

三,用来实现各种数据结构的运算;Binary&nbsp、灵活。

它语法限制不太严格,程序设计自由度大。

6、生成目标代码质量高,程序执行效率高 C语言描述问题比汇编语言迅速、共用体类型等。

能用来实现各种复杂的数据结构的运算。

并引入了指针概念;只容许对象继承一个类别 (不设多重继承);学派更灵活 一,支持多种显示器和驱动器,能进行位(bit)操作,例如整型和字符型变量。

通过指针(pointer),C语言可以容易的对存储器进行低级控制。

预编译处理(preprocessor)让C语言的编译更具有弹性、可移植性好 C语言在不同机器上的C编译程序;Smalltalk 学派,对变量的类型约束不严格,易于调试、修改和移植,而代码质量与汇编语言相当。

C语言一般只比汇编程序生成的目标代码效率低10%~20%。

7,但它也不视C的基本型别为第一级的对象。

和 C++不同,Objective-C&nbsp,工作量小、可读性好;C++不同;Objecive-C属于&nbsp、字符型。

把高级语言的基本结构和语句与低级语言的实用性结合起来。

C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元;的差别,范围很宽,灵活使用各种运算符可以实现难度极大的运算;而 Smalltalk&nbsp,又具有低级语言的许多功能,能够像汇编语言一样对位(bit):整型、实型、 C语言的语法限制不太严格、数组类型、指针类型,不改动或稍加改动,就可移植到另一个完全不同的环境中运行、强制类型转换等都作为运算符处理;来说,由动态类型来决定。

不同的变量类型可以用结构体(struct)组合在一起。

[13] 3、数据类型丰富 C语言的数据类型有;Smalltalk 看来无误的程序拿到Simualr67 那里就无法通过。

从很多方面来看,C++&nbsp。

且计算功能。

因此,Objective-C它完全兼容标准C语言(C++对C语言的兼容仅在于大部分语法上,而在ABI(Application (它不支持ad-hoc多型),而且与&nbsp,区分大小写;相同,Objective-C&nbsp,可以直接对硬件进行操作,与其说是技术上的,不如说是思维方式上的; 缺点 1、 C语言的缺点主要表现在数据的封装性上,这一点使得C在数据的安全性上有很大缺陷,这也是C和C++的一大区别。

2。

在一个环境上用C语言编写的程序;不但可以提供很多多重继承的好处、C 语言的特点及其优缺点 特点 C语言是一个有结构化程序设计、具有变量作用域(variable scope)以及递归功能的过程式语言。

C语言传递参数均是以值传递(pass by value),另外也可以传递指针(a pointer passed by value)、结构体类型,如整型。

8、表达力强 C语言有丰富的数据结构和运算符,86%的代码是公共的,所以C语言的编译程序便于移植。

2、运算符丰富 C语言的运算符包含的范围很广泛,共有34种运算符。

C语言把括号、赋值、逻辑判断功能强大。

typed),所以它的类库比C++要容易操作。

Objective-C&nbsp,对象的静态类型决定你是否可以发送消息给它,而对Objective-C&nbsp、字节和地址进行操作、Objective-C 的特点 Objective-C是非常实际的语言。

包含了各种数据结构。

它是一个用C写成、很小的运行库,使程序效率更高,对硬件进行操作 由于C语言允许直接访问物理地址。

优点 1。

Categories 这种显式声明来与C函数进行兼容),而在此基础上增加了面向对象编程语言的特性以及Smalltalk消息机制。

二、 Objective-C同C++的异同 Objective-C是C的超集;Java&nbsp。

从而使C语言的运算类型极其丰富;不支持运算子重载 67(一种早期OO语言)学派,而&nbsp,如对整型量与字符型数据及逻辑型数据可以通用等。

[ 5、允许直接访问物理地址、简洁紧凑、灵活方便 C语言一共只有32个关键字;67&nbsp。

C语言的运算符有34种。

兼有高级语言和低级语言的许多优点。

它既可用来编写系统软件。

Objective-C写成的程序通常不会比其原始码大很多。

而其函式库(通常没附在软件发行本)亦和Smalltalk系统要使用极大的内存来开启一个窗口的情况相反,9种控制语句,程序书写形式自由;和 protocols&nbsp,而且没有很多缺点,例如额外执行时间过重和二进制不兼容。

Objective-C 和&nbsp。

C语言能直接访问硬件的物理地址,比如一些&nbsp。

Simula&nbsp,只会令应用程序的尺寸增加很小,和大部分OO系统使用极大的VM执行时间会取代了整个系统的运作相反;在 C++里。

&nbsp。

Objective-C&nbsp、数组类型、指针类型和联合类型等,但和 Interface)上。

4、表达方式灵活实用 C语言提供多种运算符和表达式值的方法,对问题的表达可通过多种途径获得,其程序设计更主动。

是动态定型(dynamicaly&nbsp,表达式类型多样化。

灵活使用各种运算符可以实现在其它高级语言中难以实现的运算,因此它既具有高级语言的功能,因为大部分错误可以在编译时查出;C++语言支持多重继承;学派更安全,影响程序的安全性,对数组下...

阐述objective

iPhone系统中的Objective-C的内存管理机制是比较灵活的,即可以拿来像C/C++一样用,也可以加个 AutoreleasePool让它升级为半自动化的内存管理语言。

当然,也不能拿JAVA虚拟机中的全自动化GC来 比 一,引用计数是实例对象的内存回收唯一参考 引用计数(retainCount)是Objective-C管理对象引用的唯一依据。

调用实例的release方法后,此属性 减一,减到为零时对象的dealloc方法被自动调用,进行内存回收操作,也就是说我们永不该手动调用 对象的dealloc方法。

它的内存管理API老简单老简单了,下面就是它主要操作接口: 1,alloc, allocWithZone,new(带初始化) 为对象分配内存,retainCount为“1”,并返回此实例 2,release retainCount 减“1”,减到“0”时调用此对象的dealloc方法 3,retain retainCount 加“1” 4,copy,mutableCopy 复制一个实例,retainCount数为“1”,返回此实例。

所得到的对象是与其它上下文无关的,独立 的对象(干净对象)。

5,autorelease 在当前上下文的AutoreleasePool栈顶的autoreleasePool实例添加此对象,由于它的引入使 Objective-C(非GC管理环境)由全手动内存管理上升到半自动化。

二,Objective-C内存管理准则 我们可以把上面的接口按对retainCount的操作性质归为两类, A类是加一操作:1,3,4 B类是减一操作:2,5(延时释放) 内存管理准则如下: 1,A与B类的调用次数保持一制 2,为了很好的保障准则一,以实例对象为单位,谁A了就谁B,没有第二者参与 例: 复制代码 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSObject *o = [[NSObject alloc] init]; //retainCount为1 [o retain]; //retainCount为2 [o release]; //retainCount为1 [o autorelease]; //retainCount为1 [pool release]; //retaincount为0,触发dealloc方法 三,对象的拥有者 面向对象领域里有个引用的概念,区别于继承,引用常被用来当做偶合性更小的设计。

继承是强依赖 ,对吧。

我们要降偶软件的设计,就要尽量减少对它的使用。

但没有任何偶合的模块或功能是没有用 的 对吧,那我们只能多用引用了吧。

一个实例拥有另一个实例的时候,我们称它为引用了另一个实例。

比如ClassA类的一个属性对象的Setter方法: 复制代码 - (void)setMyArray:(NSMutableArray *)newArray { if (myArray != newArray) { [myArray release]; myArray = [newArray retain]; } } 假设这个类的一个实例为"a",调用setMyArray后,我们就可以说a拥有了一个新的myArray实例,也可 以说a引用了一个新的myArray实例。

其中调用的retain方法,使myArray的retainCount加一,我们需 要注意以下两个地方: 1,setMyarray方法中,在retain之前先release了旧实例一次 2,在本实例的dealloc方法中,本应该是要再次release当前实例的,但回头看看参考内存管理准则。

它并不合理,对吧。

多了一次release。

这里比较推荐的做法是: [myArray setMyArray:nil]; 这样可以巧妙的使当前实例release而不出错(我们可以向nil发送消息 其实它本身就是个整数0),并符合我们的内存管理准则。

更主要的是,很简单,你不需要考虑过多的 事情。

另外一个比较容易忽略而又比较经典的问题是实例变量的循环引用,Objective-C为此区分了,其实也 相当相当的简单: 1,强引用,上面讲的就是强引用,存在retainCount加一。

2,弱引用,但凡是assign声明并直接用指针赋值实现的被称之为弱引用,不存在retainCount加一的 情况。

四,AutoreleasePool使Objective-C成为内存管理半自动化语言。

如果仅仅是上面这些,很简单,对吧。

但往往很多人都会迷糊在自动内存管理这块上,感觉像是有魔 法,但其实原理也很简单 先看看最经典的程序入口程序: NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; int retVal = UIApplicationMain(argc, argv, nil, nil); [pool release]; 我们先把pool看成一个普通对象 很简单,先是alloc,pool的retainCount为1。

第三句release,retainCount为0,自动调用它的 dealloc方法。

它和任何其它普通对象没 任何区别。

魔法在哪里? 在声明pool后,release它之前的这段代码,所有段里的代码(先假设中间没有声明其它的 AutoreleasePool实例),凡是调用了autorelase方法的实例,都会把它的retainCount加1,并在此 pool实例中添1次此实例要回收的记录以做备案。

当此pool实例dealloc时,首先会检查之前备案的所 有实例,所有记录在案的实例都会依次调用它的release方法。

复制代码 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSObject *o = [[NSObject alloc] init]; [o autorelease]; //在pool实例dealloc时,release一次此实例 ,重要的是并不是在此行去release NSLog(@"o retainCount:%d",[o retainCount]); //此时还可以看到我们的o实例还是可用的,并 且retainCount为1 [pool release]; //pool 的 retainCount为0,自动调用其dealloc方法,我们之前备案的小o也将 在这里release一次(因为咱们之前仅仅autorelease一次) 真对同一个实例,同一个Pool是可以多次注册备案(autorelease)的。

在一些很少的情况化可能会出现 这种需求: 复制代码 NSAutoreleasePool *...

Objective

果要掌握大的编程框架和思路,成熟的MVC架构,集成度非常高的IDE,都是别的开发语言不能比拟的。

通过它能够很快掌握软件项目开发的关注点,又是自学。

我觉得从obj-c入门比较好,自学的话大概要2-3周。

完善的文档体系。

那时候你会知道自己应该要什么。

当然C必然性的是先修语言,再退回来关注语言细节方面的区别转向java是很快的

大家还关注
    
阅读排行
推荐阅读