之前一直学习的是java,javaweb,最近接触的是安卓的开发,假期看了一些关于Objective-C的内容 ,由于家里没有网络不能即时发布博文和大家分享了~
从之前学习的java语法到现在接触的Objective-C有很多不同之处,例如:Objective-C没有垃圾回收器,却含有保留/释放方法和自动释放池。必要时,也可以在Objective-C程序中进行垃圾回收。
Java接口与Objective-C正式协议类似,因为都需要实现一组方法。Java具有抽象类,但Objective-C没有。Java具有类变量,但Objective-C中,可以使用文件范围内的全局变量并为它们提供对应的访问器。Objective-C的公共和私有方法的形式比较松散。在Objective-C中,对象支持的任何方法都可以被调用,即使它们没有以任何外部形式出现(例如头文件中)。Java允许声明final类,阻止更改其中的任何子类,而Objective-C则与此相反,允许在运行时向任何类添加方法。
Objective-C中类的实现方式可以分成两个文件,头文件和自身的实现文件。但并不是一定要这样划分(例如某些小的私有类),这在本书的某些代码中意境有所反映。头文件(带有.h扩展名)保留类的公开信息,例如使用此类的代码讲使用的任何新的枚举、类型、结构,以及代码。其他代码段使用预处理器(#import)导入该文件。Java中缺少C预处理器。C预处理器是一种文本替换工具,它能在C、Objective-C和C++源代码进行编译器之前,先对它们进行自动处理,以#开头的指令表示一个预处理器命令。C预处理器是一个功能非常强大但又危险的工具。很多编程人员都认为java中缺少预处理器是一个良好的特性。
在java中,几乎所有错误都是通过一场来处理的。而在Objcective-C中,错误处理的方式取决于所使用的API。Unix API通常会返回值-1和一个全局错误编号(error),以设置某个特定的错误,Cocoa API通常仅在编程人员出现或无法清除时才抛出异常。Objective-C语言提供的异常处理特性与java及C++类似,采用@try、@catch、和@finally结构。
在Objective-C中,空(零)对象采用nil表示,可以向nil对象发送消息,而不必担心出现NullPointerException异常。向nil对象发送的消息代表停止操作指令,因此,不必检查发送的消息是否为NULL。
在Objective-C中,通过使用类别向现有类中添加方法,可以改变类的行为。 Objective-C中没有类似于final的类。因为编译器需要知道超类定义的对象的大小,所以任何类只要包含子类头文件,就可以把它设置为子类。
实际上,相对于java而言,在Objective-C中很少使用子类化行为。因为,通过类别和动态运行时机制,可以想任何对象发送任何消息,可以将某些功能放到含有较少功能的类中,也可以将功能呢放到最有意义的类中。例如:可以在NSString上加入类别来添加反转字符串或删除所有空格等特征,然后可以在任何NSString类中调用该方法,无论调用来自何处。当然,你也可以使用自己的字符串子类来提供那些特性。
一般来说,只有当创建某个全新的对象(位于对象层次结构的顶部),或者需要从根本上改变某个对象的行为,或者由于类不能实现某个功能而需要使用子类时,才需要在Cocoa中设置子类,例如:Cocoa使用NSView类机构用户界面组件,却无法实现它的dramRect:方法。因此,需要试这NSView的子类并重写dramRect:方法来绘制视图。但对其他大多数对象,通常采用委托和数据源的方式。由于Objective-C可以想任何对象发送任何消息,对象不必含有特定的子类或遵从特定的接口,这样,单个类就可以成为任意个不同对象的委托和数据源。
因为类别中意境声明了数据源和委托方法,因此,不必实现所有的数据源和委托方法,在Objective-C中,Cocoa编程很少使用空存根方法,某些方法会在嵌入式对象中调用相同的方法来使编译器能够顺利底适应一种正式协议。
当然,功能越强,责任越大。Objective-C采用手动保留、释放和自动释放的内存管理系统,这样容易产生一些棘手的内存错误,在其他类中添加类别是一种功能强大的工作机制,但如果随意滥用,会降低代码的可读性,导致其他人无法理解。另外,Objective-C是以C为基础的,因此,可以使用C语言的所有特性,同事包括使用预处理器可能带来的危险,并可能出现与指针相关的内存管理错误。
相关推荐
Java转Objective-C工具 J2ObjC ,J2ObjC 是一个来自 Google 的开源命令行工具,用于将 Java 代码转成 iOS 平台上...
JAVA OBJECTIVE-C 通用DES加密程序
Learn Objective-C for Java Developers Learn Objective-C for Java Developers will guide experienced Java developers into the world of Objective-C. It will show them how to take their existing language...
Java-Objective-C-Bridge概要薄桥,允许从Java到Objective-C的双向通信。执照要求OS X上的Java 11或更高版本JNA入门检出项目并使用mvn clean install (用于调试版本)或mvn clean install -Drelease=true (用于...
J2ObjC(Java to Objective-C)是谷歌出品的一个开源的命令行工具,允许开发者将Java代码转换成适用于iOS平台的Objective-C代码
sonar-objective-c-plugin-0.5.0-SNAPSHOT
如果你想迅速掌握Objective-C,并有c++或Java的基础,该文档绝对是你的首选。该文档共13页,全是Objective-C知识的精华,没有在此啰嗦与其他语言相同的部分。
网易云信ReactNative组件_Java_Objective-C_下载.zip
围绕ZendeskChatv2的ReactNativeWrapper_Java_Objective-C_下载.zip
Objective-C for Java developers guide by Bob McCune Very intuitive ppt.
用于Twilio可编程语音SDK的ReactNative包装器_Java_Objective-C_下载.zip
J2ObjC 是一个来自 Google 的开源命令行工具,用于将 Java 代码转成 iOS 平台上的 Objective-C 代码。该工具使得 Java 代码可作为 iOS 应用构建的一部分,而且无需对生成的文件进行编辑。其目标是为了编写非 UI 应用...
无论你是初次接触Objective-C和Cocoa,还是已有丰富的C语言、C++或者Java编程经验,本书都能让你轻松过渡并熟练掌握Objective-C! 本书三位作者是顶级苹果专家,书中以苹果最新的Xcode 4.x工具为基础,详细讲述了...
A Java to iOS Objective-C translation tool and runtime.zip,A Java to iOS Objective-C translation tool and runtime.
刚入门开发iPhone的新手,应该新看Objective-C语言,就像你做Java开发,最开始的你应该学会java语言,而不是,一上来就要开干Eclips;做.NET的,最开始你要学会C#或者VB.NET语言,而不是一上来就整个VS。记住,基础...
J2ObjC: Java to Objective-C Translator and Runtime Project site: J2ObjC blog: Questions and discussion: What J2ObjC Is J2ObjC is an open-source command-line tool from Google that translates Java ...
本书结合理论知识与示例程序,全面而系统地讲述Objective-C编程的相关内容,包括Objective-C在C的基础上引入的特性和Cocoa工具包的功能及其中的框架,以及继承、复合、源文件组织等众多重要的面向对象编程技术。...
Whether you're an experienced C programmer or you're coming from a different language such as C++ or Java, leading Mac experts Scott Knaster and Waqar Malik show how to harness the power of Objective-...
这个案例是本案例是关于OC中指针(*)与引用(&)的区别案例集。 ocprj5 这个案例是关于类相关的基本案例,包括基本类创建,类属性相关,构造函数,自定义方法,静态方法。 ocprj6 这个案例是关于NSString类的基本使用...