黑马程序员---学习笔记21:OC基础(8)

SAP ERPsim生产拓展实验报告 ERP课的实验和实践,也是SAP竞赛玩的东西,除了界面不华丽外很像游戏而且是团队型的pvp大乱斗 阅读详情

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-


@property是编译器指令,告诉编译器声明属性的访问器(getter和setter)方法;
免去手工写get和set方法

@property的使用:(仅仅是帮我们做了声明,没有做实现,需要手动实现)
1) 使用格式
@property 数据类型 方法名(去掉set)
@property int age;//千万别写成 _age ,要不自动帮我们声明的方法名都会变。
2) 作用:
在Xcode4.4之前,用于帮我们实现get/set方法的声明
在Xcode4.4之后,有增强功能

注意事项:
1) 一定要写在@interface和@end之间
2) 一定要规范写方法名


@synthesize帮我们实现了成员变量的get和set方法
@synthesize age;//帮我们生成了一个变量age !!!
替代:
-(void)setAge:(int) age{
Self->age=age;
}

-(int)age{
Return age;
}
考点:在这里是重新生成的成员变量的值,和定义的成员变量不一样,当我们在打印成员变量值时,还是为空的状态。

注意:
方法名一定要 在.h中使用 @property 数据类型 方法名;不能单独写新的

@synthesize指定实例变量赋值:(不像上面一样帮我们重新生成两个新的变量,这样容易出错)
在类型一致的情况下,可以@property int age,weight;@synthesize int age,weight;

指定实例变量的@synthesize age=_age,weight=_weight;(在实现的时候,不同类型的变量也能写在一起)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

@property增强使用
在Xcode4.4之后,可以只使用@property而不使用@synthesize,完成成员变量_age 的声明和实现.
操作的对象是带有下划线的成员变量
如果我们的当前类,没有下划线的实例变量,系统会帮我们生成(但是生成的变量是私有变量不能被继承)
在增强模式下,如果同时只能重写get或set一个方法如果两个都重写了,系统就会报错(因为此时@property多余了,白给你自动生成了。)
如果真的想重写,需要在加上@synthesize,这样就表示不使用增强模式,可以重写

所有类都继承与NSObject类,所以NSObject类的对象在强制类型转换之后可以使用任何类的对象方法。
NSObject *obj=[Animal new];
[(Animal *)obj run];

ID类型
Id 是一种通用的对象类型,它可以存储任何类的对象,也可以理解为万能指针。

Id类型的使用:
Id obj;
Obj=ani;
[obj run];//动物在跑
Obj=dog;
[obj run];//狗在跑
NSObject和id都可,以指向任何对象
NSObject会进行编译检查(需要强制类型转换才能使用不同名的方法)
Id可以直接用(编译器看到id以后就认为是动态绑定,就不能再检查了,运行时才检查)

IOS 5之后推出了instancetype类型
和id的异同
相同点:都可以作为方法的返回类型
不同点:
1) instancetype可以返回和方法所在类相同类型的对象,id只能返回未知类型的对象。
2) instancetype只能作为返回值,不能像id一样作为参数。


动态类型检查

对象在运行时获取其类型的能力叫做内省
1, 判断类型
(1) 判断某个对象是否是类的实例对象,或者子类的实例对象。(对象和类)
isKindOfClass使用格式[对象 isKindOfClass:类对象];
BOOL isInstance=[ani isKindOfClass:[Animal class]];


(2)-(BOOL) isMemberOfClass:classObj;判断时候是这个类的实例,不管子类 (对象和类)

(3)-(BOOL)类对象 isSubclassOfClass: 类对象
判断是否是制定类的子类(类和类之间的关系)
获取类对象的方法有两种[dog class]或者[Dog class];


2,方法响应的检测
(1)判断 【实例对象 】能否响应(调用)指定方法

-(BOOL)respondsToSelector:SEL;判断实例是否有这样的方法。
SEl s1=@selector(eat);
BOOL isRespond=[ani respondsToSelector:s1];
(小结:父类对象调用子类中新增的方法,即使强制类型转换也不行。父类类型的指针指向子类对象的情况下,强制类型转换下是可以的。Animal *ani =[Dog new])

(2)判断【类】中有没有指定方法:(这个方法是类方法,但是他判断的方法没有区分,继承也是能判断的)
+(BOOL)instancesRespandToSelector:

响应方法:
并不是强制类型转换[(Dog*)ani eat] 而是 SEL s1=@selector(eat);[ani PerformSelector:s1];
通过SEL选择器找到相应的方法,这是响应无参的方法。
还要响应有参的方法。
SEL s2=@selector(eat:);
[ani PerformSelector:s12 withObject:@”XXXXX”];//两个参数可以再增加一个withObject,但是最多支持两个参数。

在ros中进行多传感器融合定位 ROS 中的 robots_localization 包是一个非常有用的包,可以使用各种卡尔曼滤波器融合任意数量的传感器!我们将使用它将全局姿势数据(x、y、z 和orientation)与机器人上的现有传感器融合,以实现更强大的定位! 阅读详情

相关推荐

最小路径和——动态规划求解(Java实现)

最小路径和——动态规划求解(Java实现) 题目: 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 示例: 输入: [ [1,3,1], [1,5,1], [4,2,1] ] 输出: 7 解释: 因为路径 1→3→1→1→1 的总和最小。 这题和机器人走路的思路类似,就是状态方程有所不同,...

weixin_43395911的博客 895

黑马程序员学习笔记——OC之基本简介

简介: OC全称为Objective-C,是面向对象C的意思。是在C语言的基础上增加了一层面向对象的语法,而C语言是面向过程的。 其特点为: 1、 C语言的基础上增加了一层最小的面向对象的语法。C++的面向对象语法比JAVA多,JAVA的面向对象语法比OC多,OC只保留了面向对象语法的精华。 2、 完全兼容C语言。C、OC能混用。.c能编写C代码,.m能编写C、OC代码,.m能同时编写这三

yangying514的专栏 1206

用FPGA驱动WS2812B点阵,手把手教你实现动态文字显示(附完整Verilog代码)

本文详细介绍了如何使用FPGA驱动WS2812B点阵实现动态文字显示,包括硬件连接、Verilog代码实现和动态效果设计。通过精确的时序控制和数据处理,读者可以掌握FPGA与WS2812B的交互技术,并实现炫酷的显示效果。附完整Verilog代码,适合硬件爱好者和工程师参考实践。

weixin_30482383的博客 669

黑马程序员-OC语言核心语法(1)

1. 点语法:对象调用方法       上述完整方法为- (void)setAge:(int)age;   1> 如何判断set和get方法:         如果赋值,则是set方法。                  eg:stu.age = 10;         否则是get方法。                   eg :  int age =

wlwl363的专栏 430

html2canvas 返回的toDataURL()数据为 data:,的解决方法

html2canvas 返回的toDataURL()数据为 data:,的解决方法 我在使用html2canvas的使用, 发现toDataURL() 返回的数据为data:, 而且将数据设置为img的src属性,图片也不能正常显示,我尝试了很多方法,也没有解决出来,经过我不断的百度+自己尝试,终于解决了这个问题。 代码: 这段代码是没有任何问题的,标准html2canvas的demod代码,但就是无法正常将图片previewImg 渲染出来,dataURL 我打印的结果为 data:, 错误的原因是,

java123_PB的博客 5025

Ubuntu20.04浏览器上网慢解决方法——体验优化

一、问题描述 ubuntu上网慢的原因可能有多种: 1.主机网络慢 2.客户机下载网络占用 3.域名解析慢 本文仅代表本人配置过程,网络配置需谨慎小心 二、使用本地DNS服务器解决问题 1.安装 dnsmasq sudo apt-get install dnsmasq 2.配置dnsmasq ——终端输入: sudo gedit /etc/dnsmasq.conf ——文本中查找 : #resolv-file= ——将之替换为: resolv-file=/etc/resolv.dnsm

nofear的博客 1万+

黑马程序员————OC基础学习重要小知识点总结

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 1、首先,什么是Objective-C?     Objective-C是一门基于C语言的面向对象语言,C语言的基础上,增加了一层最小的面向对象语法,完全兼容c语言,它在现代计算机的主要作用于Mac OS X作为桌面语言以及作用于iPhone OS(亦称:iOS)。它原是Ne

whymerain的专栏 873

ZYNQ实战:如何用AXI-stream FIFO解决跨时钟域数据同步难题(附完整代码)

本文深入探讨了在ZYNQ项目中,如何利用AXI-Stream FIFO有效解决PS与PL之间的跨时钟域数据同步难题。文章详细分析了异步FIFO的架构设计、关键配置参数,并提供了PS端软件策略与PL端逻辑设计的完整代码示例,旨在帮助开发者构建稳定可靠的数据流通道,优化系统性能。

nginx7reverse的博客 754

黑马程序员-IOS-OC基础-OC简介及基本语法

-------------------------------------- android培训、java培训、ios培训期待与您交流! ---------------------------------  OC简介:OC是Objective-C的简称,OC是在C语言的基础上,增加了一层最小的面向对象语法;完全兼容C语言;可以在OC代码中混入C语言代码,甚至C++代码;可以使用OC开

qq_25027273的专栏 467

ARM Cortex平台NEON指令集优化实战指南

本文为ARM Cortex平台开发者提供了一份全面的NEON指令集优化实战指南。文章从NEON的SIMD架构原理讲起,详细介绍了开发环境搭建、NEON内联函数与自动向量化两种核心编程方法、关键数据类型与指令,并通过图像饱和运算、矩阵乘法等实战案例,深入解析了性能调优技巧与常见避坑指南,旨在帮助开发者充分释放ARM处理器的并行计算潜力。

weixin_29162439的博客 260

从零开始了解数据采集(五)——工业通信协议:数据采集的“语言”桥梁

数据采集常用的通信协议有哪一些?看完这篇你就了解了~

李恒的博客 4059

黑马程序员——iOS核心基础(17-18天)-黑马程序员-专题视频课程

C语言基础17-18天。其中包括OC类和对象创建、类方法和Xcode

heima_cxy的博客 292

【ARM Trace32(劳特巴赫) 使用介绍 10 -- Trace32 scan dump 详细介绍】

将图 1-2 中扫描单元按照扫描移位模式连接起来,就构成了扫描测试中的基本结构,这里介绍下全扫描。全扫描就是多个扫描单元相连接,上一单元的扫描输出,连接到目前单元的扫描输入,目前单元的扫描输出连接到下一单元的扫描输入,以此类推,构成一条移位寄存器链,如图1-3 所示:图 1-3 全扫描这样的扫描结构,可通过一个串行输入端,将期望的数据存入移位寄存器链并观察运行结果。

CodingCos的博客 2034

黑马程序员——OC的初步认识,类和对象

—-Java培训、Android培训、iOS培训、.Net培训期待与您交流—- 一、oc简介 oc是在c语言的基础上,增加了面向对象的语法,开发的一种语法。 oc可以完全兼容c语言,可以在oc中混入c语言代码和一部分的c++代码 oc用途:用于Mac os x平台和ios平台的应用程序开发 文件后缀名c->.c oc->.m c++->.m 二、语法 1.关键字都是以

pangetzp_41904129的专栏 693

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

黑马程序员——iOS核心基础(15-16天)-黑马程序员-专题视频课程

C语言基础15-16天。其中包括通讯录项目实战。

heima_cxy的博客 317

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

黑马程序员---OC基础---OC与C的差异

------- android培训、java培训、IOS培训期待与您交流! ---------- 1、源文件的对比 C语言中:我们能够遇到的文件后缀有: .c:C语言的源文件。 .o:C语言编译后的目标文件。 .out:可执行文件。 .h:头文件。 OC语言中:我们能遇到的文件后缀有:(常见的是.m和.h) .h:头文件。 .c:C语言的源文件。 .cpp/.cc:C++语

shmily3945的博客 986

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

黑马基础视频学习笔记_OC之id

黑马基础视频学习笔记_OC之id

yangying514的专栏 417

黑马程序员——6、OC语言(基本语法)

yi

tan_qi的专栏 718

黑马程序员_使用oc写了个命令行21点小游戏

今天把oc基础视频看完,就花了点shi

u014266774的专栏 1017

黑马程序员__oc基础知识总结

------- IOS培训、android培训、期待与您交流! ----------

wuyun768的专栏 540

黑马程序员——02-OC初体验

一、OC简介 OC是Objective-C的简称,是根据C语言所衍生出来的语言,在C语言的基础上,增加了一层最小的面向对象语法,而且完全兼容C语言,可以在OC代码中混入C语言代码,甚至是C++代码。可以使用OC开发Mac OS X平台和iOS平台的应用程序。   二、OC语法 1、关键字 OC中基本上所有关键字都是以@开头,在此列举一些常用的关键字 示例: @interface、@i

yqlqt的专栏 462

黑马程序员-IOS学习笔记-OC基础OC简介及基本语法

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- OC简介:OC是Objective-C的简称,OC是在C语言的基础上,增加了一层最小的面向对象语法;完全兼容C语言;可以在OC代码中混入C语言代码,甚至C++代码;可以使用OC开发Mac OS X平台和ios平台的应用程序。 OC语法预览 1.     关键字

lengnuanzizhi365的专栏 643

黑马程序员——OC基础语法笔记和习题

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------1、Objective-C语言简介: C语言的基础上,增加了一层最小的面向对象语法 完全兼容C语言 可以在OC代码中混入C语言代码,甚至是C++代码 可以使用OC开发Mac OS X平台和iOS平台的应用程序2、OC语法 关键字 基本上所有关键字都是以@开头 下面列举一些常见的关键字,看一眼就行了

caizexu12345的博客 593

黑马程序员——OC学习笔记01 OC基础知识。

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、OC的一些入门基础。 1、OC(全名Objective-C)的本质就是C语言,只不过它在C语言的基础上添加了一些新特性。 2、OC文件的扩展名是.m,扩展名.m代表message。 3、和C语言一样,OC使用头文件来包括结构体、符号常量和函数原型等元素的声明。OC中使用#import

gjgoodjob271的博客 708

黑马程序员————OC中Foundation框架知识总结

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一个框架(Framework)就是一个软件包,它包含多个类。Mac 操作系统提供了几十个框架,从而帮助软件开发人员迅速地在Mac 系统上开发应用程序。在这些框架中,有一 些称为基础框架。基础框架就是为了所有程序开发提供基础的框架,其中的类包括:字符串(NSString)、数字(N

whymerain的专栏 594

黑马程序员—OC学习摘要

1、一个类的定义一般分成两部分:  @interface 部分   1、确定这个类继承自谁,使用冒号":"   2、确定拥有的数据,包括在"{}"中   3、确定可以执行的动作    - 实例方法    + 类方法   4、以@end结尾  @implementation部分    2、程序中有GC机制,但是最好自己管理内存。IPhone等也不支持GC。 3、

guzhenxian340323的专栏 451
上一篇: 黑马程序员---学习笔记20:OC基础(7)
下一篇: 黑马程序员---学习笔记22:OC基础(9)
七分热度_HD
博客等级 码龄14年 12粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值