objective-c 订阅
Objective-C 展开全文
Objective-C
信息
操作系统
OS X
开发语言
C/C++
开源协议
未知
Objective-C
Objective-C ,通常写作 ObjC 和较少用的 Objective C 或 Obj-C ,是扩充 C 的面向对象编程语言。它主要使用于 Mac OS X 和 GNUstep 这两个使用 OpenStep 标准的系统,而在 NeXTSTEP 和 OpenStep 中它更是基本语言。Objective-C 可以在 gcc 运作的系统写和编译,因为 gcc 含 Objective-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 不但可以提供很多多重继承的好处,而且没有很多缺点,例如额外执行时间过重和二进制不兼容。
收起全文
精华内容
下载资源
问答
  • Using the GNU Compiler Collection Language Standards Supported by GCC GCC支持的语言标准 2.3 Objective-C and ...GCC supports“traditional”Objective-C(also known as“Objective-C 1.0”) and contain

    Using the GNU Compiler Collection

    Language Standards Supported by GCC

    GCC支持的语言标准

    2.3 Objective-C and Objective-C++ Languages

    GCC supports“traditional”Objective-C(also known as“Objective-C 1.0”) and contains support for the Objective-C exception and synchronization syntax.

    GCC支持”传统的” Objective-C(也称为“Objective-C 1.0”),并支持 Objective-C 异常和同步语法。

    It has also support for a number of“Objective-C 2.0”language extensions, including properties, fast enumeration (only for Objective-C),
    method attributes and the @optional and @required keywords in protocols.

    它还支持一些”Objective-C 2.0”语言扩展, 包括属性, 快速枚举(仅适用于Objective-C), 方法属性和协议中的@optional和@required关键字。

    GCC supports Objective-C++ and features available in Objective-C are also available in Objective-C++.

    GCC也支持Objective-C++,Objective-C 中可用的特性同样也可以在 Objective-C++ 中使用。

    GCC by default uses the GNU Objective-C runtime library, which is part of GCC and is not the same as the Apple/NeXT Objective-C runtime library used on Apple systems.

    GCC默认使用GNU Objective-C运行库,它是GCC的一部分,与Apple系统上使用的 Apple/NeXT Objective-C运行时库不同。

    There are a number of differences documented in this manual.

    本手册中记录了若干差异。

    The options‘-fgnu-runtime’and ‘-fnext-runtime’allow you to switch between producing output that works
    with the GNU Objective-C runtime library and output that works with the Apple/NeXT ObjectiveC runtime library.

    选项 '-fgnu-runtime''-fnext-runtime' 允许你在 GNUApple/NeXT Objective-C 运行时库 之间进行切换并产生相应的输出

    There is no formal written standard for Objective-C or Objective-C++.

    Objective-C 或 Objective-C ++并没有正式的书面标准。(意思是没有类似C或C++那种正式发表的语言标准 )

    The authoritative manual on traditional Objective-C (1.0) is “Object-Oriented Programming and the Objective-C Language”: http://www.gnustep.org/resources/documentation/ObjectivCBook.pdf is the original NeXTstep document.

    传统Objective-C(1.0)的权威手册是“面向对象编程和Objective-C语言”:
    http://www.gnustep.org/resources/documentation/ObjectivCBook.pdf 是原始的NeXTstep文档。

    The Objective-C exception and synchronization syntax (that is, the keywords @try, @throw, @catch, @finally and @synchronized) is supported by GCC and is enabled with the option ‘-fobjc-exceptions’.

    GCC支持 Objective-C 异常和同步语法(即关键字@try,@throw,@catch,@finally和@synchronized),并默认启用了选项'-fobjc-exceptions'

    The syntax is briefly documented in this manual and in the Objective-C 2.0 manuals from Apple.

    本手册和Apple的Objective-C 2.0手册中简要介绍了语法。

    The Objective-C 2.0 language extensions and features are automatically enabled;

    Objective-C 2.0 语言扩展和功能自动启用

    they include properties (via the @property, @synthesize and @dynamic keywords),
    fast enumeration (not available in Objective-C++),
    attributes for methods (such as deprecated, noreturn, sentinel, format),
    the unused attribute for method arguments,
    the @package keyword for instance variables and the @optional and @required keywords in protocols.

    它们包括属性(@property,@synthesize 和 @dynamic 关键字),
    快速枚举(在Objective-C ++中不可用),
    方法的属性(如 deprecated,noreturn,sentinel,format),
    未使用的方法参数的属性,
    实例变量的 @package 关键字和协议中的 @optional 和 @required 关键字。

    You can disable all these Objective-C 2.0 language extensions with the option ‘-fobjc-std=objc1’,
    which causes the compiler to recognize the same Objective-C language syntax recognized by GCC 4.0,
    and to produce an error if one of the new features is used.

    您可以使用选项'-fobjc-std = objc1'禁用所有这些 Objective-C 2.0 语言扩展,
    这将导致编译器 与 GCC 4.0 一样来识别 Objective-C 语言语法,并且如果使用某个新功能将会产生错误。

    GCC has currently no support for non-fragile instance variables.

    GCC目前不支持 non-fragile 实例变量。

    The authoritative manual on Objective-C 2.0 is available from Apple:
    https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html

    Objective-C 2.0的权威手册可从Apple获得:

    For more information concerning the history of Objective-C that is available online, see http://gcc.gnu.org/readings.html

    有关Objective-C历史的更多信息可以在线获得,详见 http://gcc.gnu.org/readings.html

    展开全文
  • objective-c

    2017-03-03 11:55:26
  • 初识Objective-CObjective-C刚诞生的时候,扩展名.m代表message,它指的是Objective-C的一个主要特性。NSLog( @“ %d ” , 12 ); // 可以输出 12 printf ( “ %d\n ” , 23 ); // 可以输出23 NSLog( @“ %s “ , ...

    初识Objective-C

    Objective-C刚诞生的时候,扩展名.m代表message,它指的是Objective-C的一个主要特性。

    NSLog( @“ %d ” , 12 );  //  可以输出 12
    printf ( “ %d\n ” , 23  ); // 可以输出23
    NSLog( @“ %s “ ,  “abc” ) ; // 可以输出 字符串  abc
    printf ( “%s” ,   “abc” ) ;   // 可以输出  字符串 abc

    “ 数据第一,函数第二 ” 的 编程风格;

    遵循 开放/关闭 的编程原则,封装一个类时,我们能够对其 进行 扩展 而又不必 修改 内部的实现。

    只有代码精简,bug才无处藏身。

    OC不允许在接口里(interface)中对成员变量进行初始化。

    Objective-C 中所有对象间的交互都是通过指针实现的。

    例:(会报错)
    这里写图片描述
    如果用 .mm 做文件扩展名,编译器就会认为你是用Objective-C++编写的代码,这样就可以同时使用 C++ 和 Objective-C来编程了。

    展开全文
  • Objective-C小白入门:什么是Objective-C

    千次阅读 2019-12-02 12:44:54
    Objective-C 咳咳,今天我是你的私教美少女朵朵,开始上课。 接触一门新语言,先要了解它的历史。 Objective-C 是一种简单的计算机语言,设计为可以支持真正的面向对象编程。Objective-C 通过提供类定义,方法...

    Objective-C

    私教美少女开始上课。

    接触一门新语言,先要了解它的历史。

    此篇博文主要是了解下什么是Objective-C,朵朵主要学习的Java,以前没听说过Objective-C,但是多学一点总是没有坏处,所以就从头开始咯。

    热心网友提供了很多资料。

    Objective-C

    纵向看来,Apple公司领导着Objective-C语言的发展与维护,包括Objective-C运行时,Cocoa/Cocoa-Touch框架以及Objective-C语言的编译器。

    什么是Objective-C

    什么是Objective-C呢?朵朵网上查了一下,百科词条它是这样说的:

    Objective-C,通常写作ObjCOC和较少用的Objective CObj-C,是扩充C的面向对象编程语言。它主要使用于Mac OS XGNUstep这两个使用OpenStep标准的系统,而在NeXTSTEPOpenStep中它更是基本语言
    GCC与Clang含Objective-C的编译器,Objective-C可以在GCC以及Clang运作的系统上编译。

    好多术语看不懂,没关系,重点知道:它是扩充C的面向对象编程语言,主要使用在Mac OS X系统中,Objective-C的流行归功于iPhone的成功。编写iPhone应用程序的主要编程语言是Objective-C。就可以了。

    具体的大家点进去百科词条的链接看一下:Objective-C_百度百科上面已经把这门语言的历史和内容讲的很清楚了。
    在这里插入图片描述继续打开一个网页,出现了Objective-C入门教程,以下资料查自:Objective-C入门教程
    先讲了什么是Objective-C,和百度百科查的差不多。

    Objective-C 是一种简单的计算机语言,设计为可以支持真正的面向对象编程
    Objective-C 通过提供类定义方法以及属性的语法,还有其他可以提高类的动态扩展能力的结构等,扩展了标准的 ANSI C 语言。类的语法和设计主要是基于 Smalltalk,最早的面向对象编程语言之一

    对象的使用和对象对象架构是 iPhone 程序设计的基础,理解他们如何交互对创建你的程序非常重要。

    最后该网站还提供了一个链接:Objective-C参考链接。不知道为什么这个链接我加载不出来。

    Objective-C的历史

    接下来的资料查自简书上的热心网友:Objective-C 基础,他对Objective-C是这样理解的:

    Objective-C 是一种通用、高级、面向对象的编程语言。它扩展了标准的 ANSI C 编程语言,将 Smalltalk 式的消息传递机制加入到 ANSI C 中。目前主要支持的编译器有 GCC 和 Clang

    这里也讲到了Objective-C的历史:

    历史
    Objective-C 主要由 Stepstone 公司的 Brad Cox 和 Tom Love 在 19 世纪 80 年代发明。
    1981年 Brad Cox 和 Tom Love 还在 ITT 公司技术中心任职时,接触到了 SmallTalk语言。Cox 当时对软件设计和开发问题非常感兴趣,他很快地意识到 SmallTalk 语言在系统工程构建中具有无法估量的价值。
    1983 年,Cox 与 Love 合伙成立了 Productivity Products International(PPI)公司,将 Objective-C 及其相关库商品化贩售,并在之后将公司改名为StepStone。
    1988年,斯蒂夫·乔布斯(Steve Jobs)离开苹果公司后成立了 NeXT Computer 公司,NeXT 公司买下 Objective-C 语言的授权,并扩展了 GCC 使之支持 Objective-C 的编译,基于 Objective-C 开发了 AppKit 与 Foundation Kit 等库,作为 NeXTSTEP 的的用户界面与开发环境的基础。
    1996年12月20日,苹果公司宣布收购 NeXT Software 公司,NEXTSTEP/OPENSTEP 环境成为苹果操作系统下一个主要发行版本 OS X 的基础。

    热心网友https://www.jianshu.com/p/7e45eb0fbfc2提供了资料Objective-C的起源
    还有一篇讲了为什么学习Objective-C非常难:http://www.code4app.com/blog-960094-3531.html,中间讲到:

    实际上Objective-C是很严格的C语言的超集。而与流行的编程语言风格又差距太大。作为C语言的超集,它增加了很多东西,我们将简单看看它到底增加了什么复杂的东西。

    Objective-C是一个很“大”的语言,我是说它的语法很复杂而且又具备弹性。Apple公司已经尽可能减小了Objective-C语言的体积,然而,他们还是添加了一些东西来让Objecive-C表达式更加简单。
    Synthesizing properties
    Dot-syntax for accessing getters/setters
    Garbage Collection
    Blocks (closures)
    Automatic Reference Counting
    Weak references
    所以虽然这个语言越来越大了,但是在表达同样的目的使用的代码却越来越简单。

    当你去学习Objective-C时,它不仅仅就是一个框架, 一个运行时或者一个编译器;而是它们全部。还有个很重要的部件就是 Automatic Reference Counting(使用后无法直接调用dealloc方法),这玩意会让你使用Cocoa/Cocoa-Touch编程时更加方便。

    紧密耦合系统代码设计是Objective-C独有的。其他语 言比如在.Net框架下运行的Iron Python。以及一大堆运行在JVM的非Java语言,比如Clojure。甚至Ruby以及Rails都是两个不同的项目。当你打算使用其他语言配合 Cocoa/Cocoa-Touch以及Objective-C运行时时。你唯一的选择就是Mac Ruby。

    啊哈,以上就是Objective-C的简单了解,就到这里吧,下课。

    对了,觉得朵朵讲不清楚想要指点的大佬,请直说,不要因为我是朵娇花而怜惜我。

    展开全文
  • 对oc objective-c objective-c++ 混编 的一个大误解 Objective-C++只是源代码,不是一种编程语言,它混合了Objective-C类和C++类(两个完全不相关的实体) Xcode:11版本 新建工程时,发现我只有objective-c,...
  • IOS的学习笔记之Objective-C style guide. 转至元数据结尾 创建:张坤楠,最新修改于:二月 26, 2016 转至元数据起始 前言 http://10.9.10.115/svn/client/component/ios/ 学习计划:了解...
  • 下面是我看到的关于Objective-C Runtime的文章,先记在这里,有时间再仔细整理下:-)。Objective-C RuntimeMethod Swizzling 和 AOP 实践Objective-C 的 runtime 运行时
  • 改定履历: 2012-05-07---------新建文本文档 ...objective-c日志消息: NSLog ( @"Logging message: %@", [myObject myMehtod] ); 2. objective-c循环 用一个循环遍历objective-c数组: NSArray *myList
  • Objective-C

    千次阅读 2012-04-26 20:28:43
    Objective-C,通常写作ObjC和较少用的Objective C或Obj-C,是扩充C的面向对象编程语言。它主要使用于Mac OS X和GNUstep这两个使用OpenStep标准的系统,而在NeXTSTEP和OpenStep中它更是基本语言。Objective-C可以在...
  • Objective-C初窥之Objective-C简介

    千次阅读 2013-04-16 09:32:07
    在学习IOS之前我想我们应该,简单的了解一下Objective-C的语法特性,毕竟这个是基础,所以今天我们来简单学习一下Objective-C语言的特性。 2.Objective-C学习 2.1变量 和其他语言一样Objective-C也是具有其特有的...
  • 改定履历: 2012-05-10-------------新建文本文档 ...Objective-C 类的 interface 1. 声明实例变量和公有方法: MyString.h #import @interface MyString : NSObject { // Declare instanc
  • DATE: 2019-3-2: Objective-C和Swift的区别
  • 改定履历: 2012-05-07---------------新建文本...1. 确认objective-c对象是否是一个类的实例: [obj isMemberOfClass:someClass]; 2. 确认objective-c对象是否是一个类的实例或是其子孙. [obj isKindOfCl
  • 该系列是《Effective Objective-C 2.0——编写高质量iOS与OS X代码的52个有效方法》的读书笔记。 第一条:了解Objective-C语言的起源 同C++类似,Objective-C也是C语言进行面相对象化的扩展。二者存在一个根本性的...
  • Objective-C征途:Hello Objective-C

    千次阅读 2012-06-08 11:43:04
    先来介绍一下历史背景,Cocoa和Objective-C是苹果公司Mac OS X操作系统的核心。虽然Mac OS X相对较新,但Objective-C和Cocoa的推出已有时日。早在20世纪80年代早期,Bard Cox就发明了Objective-C,意在将流行的,可...
  • 说明:这个Objective-C专题,是学习iOS开发的前奏,也为了让有面向对象语言开发经验的程序员,能够快速上手Objective-C。如果你还没有编程经验,或者对Objective-C、iOS开发不感兴趣,请忽略。学习本专题之前,建议...
  • 这意味着Objective-C不仅需要编译器还需要执行编译代码的运行时系统。运行时系统充当Objective-C的一种操作系统,使之正常工作。 本文着眼于NSObject 类以及Objective-C 程序如何与运行时系统交互。特别是,在运行时...
  • 对于经历过VC,java的我来说,objective-c的语法给了很多新鲜感。现在就由最基础的方式来学习objective-c吧。在网上找到一篇介绍Objective-C历史的文章,现翻译后的内容如下。 在介绍一个新的错综复杂的编程...
  • Objective-C 快速入门

    2020-01-20 09:57:52
    本课程演示了Objective-C的基本使用,课程由浅入深,从开发环境的搭建开始,到代码的编写,代码的分析讲解,再到对代码编译成的二进制的进一步分析,力求让学员快速掌握Objective-C,为学员在苹果平台开发软件以及...
  • Objective-C 2.0 下一个很方便的功能:自动生成设置函数方法和获取函数方法 (统称为存取器方法)。 第一步是在接口部分中实用 @property 指令标识属性。这些属性通常是实例变量。在前文 《Objective-C 分离...
  • Objective-C之启程Objective-C语言介绍

    千次阅读 2013-04-12 09:53:23
    话说 Mac OS X 和IOS 都是基于Objective-C,所以学好Objective-C就相当于打好了地基,可见其重要性。由于本人是Java出身,对于C方面没有涉猎过,如今刚解除Objective-C,如有不对之处,请大家给与指点谢谢! 2....
  • [iOS]Objective-C 实用特性索引(Objective-C Feature Availability Index)
  • Objective-C通过一套全新语法,在C语言基础上添加了面向对象特性。Objective-C的语法中频繁使用方括号,且不吝于写出极长的方法名。第1条:了解Objective-C语言的起源所有Objective-C语言的对象都必须像这样声明:...
  • 混合使用Objective-C,C++和Objective-C++

    千次阅读 2017-11-27 10:25:58
    转自http://blog.csdn.net/horkychen之前有段时间,我参与了一项使用了C++库的Objective-C项目。写了一篇关于混编的文章,结果...其作用之一就是可以保证Objective-C的演化,而GCC的进化却太慢了。之前文章就不太适用了
  • 改定履历: 2012-05-07-------------...objective-c使用引用计数来跟踪一个对象是否应被释放(free).在运行时执行真实的内存释放(free). 1. 使用"retain"增加引用计数. [value retain] 2. 使用"release"来减少
  • 之前一直学习的是java,javaweb,最近接触的是安卓的开发,假期看了一些关于Objective-C的内容 ,由于家里没有网络不能即时发布博文和大家分享了~  从之前学习的java语法到现在接触的Objective-C有很多不同之处,...
  • iOS逆向时经常会遇到参数为block类型,本文介绍一个lldb script,可快速打印出Objective-C方法中block参数的类型。 zblock <block-address> : print oc block signature, parameter -d for disassemble I 、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 57,266
精华内容 22,906
热门标签
关键字:

objective-c