NEXT software公司开发了一套基于Unix的操作系统以及cocoa开发环境,后被苹果公司收购。

objective-C五大特性:

  • 完全兼容C
  • 面向对象
  • 单继承(OC里的函数均为虚函数、通过类别和协议实现伪多继承)
  • 动态绑定(dynamic_cast 把基类指针转化为子类指针的时候会自动做判断、ID类型 表示任意类型的对象,实现动态绑定)
  • 消息机制(SmallTalk语言 解决空指针错误崩溃)函数基于消息机制,发消息再调用函数
#import <Foundation/Foundation.h>//:表示公有继承
@interface Person : NSObject
{//属性,实例变量,默认权限为protectedint age;//对象声明时必须使用*NSString * name;
}
//生成set和get方法,nonatomic表示非多线程,assign直接赋值,strong强引用 weak弱引用 retain copy,若自己重写set,get方法会自动覆盖系统生成的默认方法,还可增加readonly属性使其只生成get函数,新的编译器甚至支持省去实例变量的声明和@systhesize
 @property (nonatomic,assign) int age; // - 表示实例的方法(消息),+ 表示类的方法(消息)static - (void)eat;- (void)setName:(NSString *)nameValue;
@end

#import "Person.h"@implementation Person
@synthesize age;- (void)eat
{NSLog(@"eat function called");
}- (void)setName:(NSString *)nameValue
{if (nameValue){//1.指针不能直接赋值,否则释放时会出现问题 2.stringWithString 方法实现NSString对象的初始化if (name != nameValue){name = nil;          name = [NSString stringWithString:nameValue];}}
}@end

#import "Person.h"
#import <Foundation/Foundation.h>int main(int argc, const char * argv[])
{@autoreleasepool{//alloc为+方法即类方法,init为-方法,用类方法创建的对象会被添加到自动释放池,用实例的方法创建的对象,需要手动的去释放。Person * p = [[Person alloc]init];[p eat];//oc字符串必须以@开头[p setName:@"yangjing"];}return 0;
}

  • OC中无引用
  • %@占位符表示对象
  • OC中数组不会默认初始化为零
  • 使用.运算符可以自动调用set,get方法
  • OC可以使用C风格的函数
  • OC函数名相同,参数个数不同可以重载,但若仅有参数类型不同则不能重载!因为OC通过参数的标签识别函数重载(即可以使用参数标签实现与C++类似的函数参数个数相同类型不同的函数重载)
  • 注意如果不声明实例变量而直接使用@property生成的是备份变量名,直接调用时记得在变量名前加下划线或使用self.或[self ]调用
  • self和this的区别:this永远是当前对象的指针不可以改变,而self可以修改它的值因此未必一定指向当前对象,在使用时要注意。
  • 前置声明@class和包含头文件不同,它只是声明这是个类不清楚类的结构,用于在.h文件中声明指向对象的指针,在.m文件引用其方法时仍需import
  • 不使用arc(自动释放内存)机制时需析构函数dealloc。当一个对象释放[p release]时和对象的引用计数器值为零时自动调用dealloc释放内存

转载于:https://www.cnblogs.com/jenayfighting/p/5339351.html

objective-C 2.0相关推荐

  1. CCF的基于UEBA的用户上网异常行为分析baseline(线上0.9263)

    基于UEBA的用户上网异常行为分析 比赛地址链接:https://www.datafountain.cn/competitions/520 数据: 代码: import pandas as pd im ...

  2. 腾讯2018广告算法大赛思路解析 100行代码带你上0.73

    个人公众号,欢迎关注 YouChouNoBB 比赛报名地址:algo.qq.com/person/mobile/landingPage?from=dsbryan 由于本次比赛我属于内部员工不得参赛,所 ...

  3. 估算带卷积核二分类0,3的网络的收敛时间和迭代次数

    制作一个网络分类minst的0和3求出这网络的迭代次数曲线表达式n(δ),和准确率表达式p-max(δ),用预期准确率去估算n,并推算需要的时间. 将minst的28*28的图片缩小到9*9,网络用一 ...

  4. 逻辑回归 + GBDT模型融合实战!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:吴忠强,东北大学,Datawhale成员 一.GBDT+LR简介 ...

  5. 数据项目总结 -- 蛋壳公寓租金分析!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:牧小熊,华中农业大学,Datawhale原创作者 本文约3000字 ...

  6. 机器学习(MACHINE LEARNING)MATLAB模拟退火算法【SA】

    文章目录 1 什么是智能优化算法 2 常用的智能优化算法 3 智能优化算法的特点 4 模拟退火算法 4.1 简介 4.1 工具箱(SA) 1 什么是智能优化算法 智能优化算法又称现代启发式算法,是一种 ...

  7. 关于UIWebView与js交互的问题

    这个问题,在网上能看到不少,主要通过调用UIWebView的一个方法stringByEvaluatingJavaScriptFromString 来实现,与js的交互问题,我想可能用的过程中会出现不少 ...

  8. 基于文本挖掘的企业隐患排查质量分析模型

    一.赛题 赛题地址:https://www.sodic.com.cn/competitions/900010 赛题背景: 企业自主填报安全生产隐患,对于将风险消除在事故萌芽阶段具有重要意义.企业在填报 ...

  9. python笔记:Gurobipy

    1 介绍 Gurobi优化器是一个数学优化软件库,用于解决混合整数线性和二次优化问题. 2 简单举例 假设我们要解决这样的一个线性规划问题: 我们可以使用gurobipy 2.1 大致流程 2.1.1 ...

  10. 金融风控实战——模型融合

    过采样方法使用条件 (1)负样本可以代表样本空间 (2)数据是足够干净的(样本.特征没有噪声) 过拟合 (1)增多数据 (2)特征筛选 (3)调参 (4)模型融合 模型融合 投票器模型融合 from ...

最新文章

  1. 使用Docker-Docker for Web Developers(2)
  2. 比Navicat还要好用的通用数据库管理工具,功能强大还免费
  3. 关于Java为什么配置好环境变量但是不能在命令行cmd运行javac的问题
  4. 如何检查Bash中是否设置了变量?
  5. Spring Cloud Bus 消息总线介绍
  6. android 高德地图设置不能旋转_你以为高德地图只是个地图,并不是?它其实还是个PPT制作神器...
  7. ios oc数组转换为c语言数组,iOS中将数组作为参数传递给服务器
  8. 半年内使用两次借呗就没法申请房贷?
  9. powershell /遍历/psobject/字符串转换Json/json数组操作
  10. 【数据结构与算法】【算法思想】 A *搜索算法
  11. 在gridview或datagrid中添加汇总行的三种实现方式
  12. 用c语言输出魔方阵答案,如何用C语言输出一个1—16 组成的4*4的魔方阵
  13. python 数据清洗 豆瓣电影_Python高阶操作--关于数据清洗
  14. 大数据可视化设计需遵守什么原则
  15. 【图论】【poj 3020】Antenna Placement
  16. c++ map是有序还是无序的_C++无序关联容器(一)-使用场合和常用函数
  17. Python深度学习基于PyTorch (附完整PPT下载)
  18. WinSnap 截图工具绿色中文特别版
  19. 读后感系列-2.《看见》柴静(二)
  20. 在Excel中输入身份证号码的方法或批量改为文本格式

热门文章

  1. OpenCV-Python实战(21)——OpenCV人脸检测项目在Web端的部署
  2. python日期_Python日期
  3. Android Retrofit下载文件进度
  4. scala case语句_Scala模式与case语句匹配
  5. Spring Session Management – Spring Session JDBC
  6. 成为数据分析师需要具备的知识体系
  7. Java基础篇:如何嵌套try语句?
  8. C++中的cin cout
  9. linux中对文件的权限设置以及作用
  10. mongodb 的基本函数语法封装