IOS开发基础Object-C(01)— OC概述及比较

2024-05-04 07:48

本文主要是介绍IOS开发基础Object-C(01)— OC概述及比较,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、OC概述

1、OC是一种通用的面向对象的编程语言,它扩展了ANSI C编程语言,将SmallTalk式的消息传递机制加入到ANSI C中。它是苹果的OS X(X表示第十代)和IOS操作系统,及其相关的API、Cocoa和Cocoa Touch的主要编程语言。
2、OC主要做UI界面,C语言、C++ 可用于图形处理。
3、OC基于C语言,在C语言的基础上增加了一层最小面对对象语法,可以完全兼容C语言。也就是说,可以在OC开发中混入C语言代码和C++语法。

二、语言预览

1、没有包名(命名空间)的概念

没有命名空间的概念,取而代之的是开发人员给类名加上前缀,来防止雷鸣冲突。比如,NSstring(OC中的字符串)、NSArray(OC中的数组,相当于Java中的list),前缀都是NS。
2、OC中的关键字和字符串都是以@开头。

(1)因为在OC 中可以混入C语法,C++语法,所以为了和其他语法关键字加以区分,OC的关键字都以@开头,例如:
@interface
声明类
@implementation
实现类
@protocol
声明协议
@optional
与@protocol配合使用,说明协议中的某个或者某几个方法可以不实现
@required
与@protocol配合使用,说明协议中的某个方法或者某几个方法必须实现
@end
与@interface ,@implementation,@protocol配合使用,代表声明或者实现结束
@encode
@encode为编译器宏,它可以将类型转换为相应的字符串。
这些具体怎么用,我们先不用追究,等以后我会详细的跟大家来讲。
(2)OC中的字符串也是以@开头,比如:@”Hello World!”,其中Hello World!就是我们需要的字符串。

NSLog(@"Hello World!");

三、语言比较

1、函数对比
我们先简单写一个Student方法

Java语言

public void Student (int age) {  }  

C++语言

void Student(int age) {  
}  

OC语言

-(void) Student:(int)age{  
}  

2.消息传递

Objective-C使用消息传递(本质是字符串),因此方法、类和对象可以在运行时确定和修改。Java的方法是与class静态绑定的,虽然可以在运行时用反射的机制获取,但效率会下降1个数量级,只在极端的情况下使用。也就是说,前者更加动态。

//在OC语言中,消息传递
[object  message:param1 withParameter:param2]  
NSString *string;    
string = [[NSString alloc] initWithString:@"Hello"]; 

3、垃圾回收

在内存管理方面Java是垃圾回收,而Objective-C是引用计数。前者发生在运行时,后者在编译期。2011的WWDC中Apple展示了最新的ARC(Automatic Reference Counting),极大减轻了程序员管理内存的负担,但其本质依然是编译期的基于引用计数的内存管理。
补充:虽然OC也可以用垃圾回收,不过使用的人很少,这也是后来ARC出现的原因吧。

4、self及this
在OC中的self 相当于Java中的this

[self method]

类似于:c++/java

this.method();

5、继承关系和接口实现

OC语言中

Student:People
ClassA:ParentA<Protocol>  
ClassA <Protocol>  

Java语言中

Student extends People
ClassA extends ParentA implements interface  
ClassA implements interface  

6、空指针

id obj = nil;
NSString *hello = nil;//nil相当与Java中的null

这篇关于IOS开发基础Object-C(01)— OC概述及比较的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/958689

相关文章

mybaits基础增删改查-------mybatis(四)

Mybatis的增删改查 mybatis流程: 1 创建实体类及接口方法 2 创建全局配置文件 configuration.xml 3 创建 sql 映射文件 BlogMapper.xml 4 将全局文件中维护 sql映射文件配置 5 调用java API 执行相关sql操作 注意sqlSession是线程非安全的 实体java类: package model;public class Blo

sort常用排序模式---------shell基础篇(三)

sort 排序命令使用 表达式意义sort -c test测试文件“test”是否已经经过排序,一般用处不大sort -k1 test.txt按照第1域对文件test.txt进行排序,日常可以用来对合并的日志文件进行时间排序sort -k1 -m log1.txt log2.txt按照第一域进行排序后合并输出到控制台,建议使用“>>” 将合并内容输出到另一个文件中sort -t / -k3 te

bimface开发实战-vue版

效果 演示地址 框架 bimface + vue3.0 代码地址 gitee地址 使用 yarn install yarn serve

iOS 添加好友请求要怎么注册监听

协议:IChatManagerDelegate代理:[[EaseMob sharedInstance].chatManager addDelegate:self delegateQueue:nil];方法: /*! @method @brief 接收到好友请求时的通知 @discussion @param username 发起好友请求的用户username @param messa

iOS 环信UI集成步骤

新建项目, 把环信的依赖库以及SDK导入到项目中, 添加pch文件, 把项目的Other Linker Flags 改成 -ObjC把环信demo的几个文件导入项目: 3rdparty, Category, Custom, Resources, Class ->Chat -> ChatView, 还有它的define文件ChatDemoUIDefine.h在pch文件导入头文件

iOS 判断网络类型

##1.引入Reachability文件夹 在AFNetworking网络请求库中有一个子文件Reachability,这里面有一个类AFNetworkReachabilityManager是用来专门处理网络类型的。 把这个类拷贝到你的工程目录下。 ##2.引入相关的头文件 #import "AFNetworkReachabilityManager.h"#import <CoreTel

如何从iOS Developer 中下载xcode dmg

最新的xcode beta 版本可以直接下载dmg安装包,但是最新的xcode正式版本却只能更新。很多时候需要在多台机器上安装xcode,显然就需要dmg。自从出了xcode ghost 事件之后,又担心第三方的xcode下载会被植入后门,其实苹果开发者官网有dmg的安装包下载,只是隐藏的比深。 点击链接:https://developer.apple.com/downloads/ 这里面不但

iOS UITableView

一、创建UITableView 1.- initWithFrame:style: - (instancetype)initWithFrame:(CGRect)framestyle:(UITableViewStyle)style 二、列表视图的配置 1.style typedef enum {UITableViewStylePlain, //普通类型UITableViewStyleGr

iOS 延迟执行的几种方法

1、performSelector方法 - (void)viewDidLoad {[super viewDidLoad];NSLog(@"当前时间:%@",[NSDate date]);[self performSelector:@selector(delayMenthod) withObject:nil afterDelay:2.0];}- (void)delayMenthod{NSLog(

iOS 学习资源

一、个人博客 1、刚刚在线 2、浅谈iOS开发中方法延迟执行的几种方式 3、MBProgressHUD 4、MJRefresh 5、AFNetworking 6、iOS数据持久化 7、iOS微信支付 二、常用的开发平台地址 1、银联支付开发平台