黑马程序员——OC---OC特有语法01

【机器人】转动的指数坐标表示心得理解 转动的指数坐标表示心得理解1.前言2.指数坐标表示旋转矩阵3.原理推导4.矩阵对数、矩阵指数 1.前言 最近因为项目需求,又学习了一点机器人学的东西,参考书籍为《现代机器人学》,该书采用指数坐标、旋量的方式来对机器人进行描述和运动学、动力学建模,让我对机器人有了更深的理解,也是弥补DH参数建模复杂的缺陷,虽然DH法只用4个参数,而旋量需要更多,但是它骚啊! 本文是我学习了转动的指数坐标表示的一个心得体会,如有问题请多多包涵。 2.指数坐标表示旋转矩阵 指数坐标可以用来表示求解旋转矩阵,其原理非常简单巧妙,需 阅读详情

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

一 点语法

OC设计点语法的目的,是为了让其他语言的开发者可以很快的上手OC语言开发,使用点语法,让它和其他面向对象的语言如java很像。其调用方法如下:

    Person *p = [Person new];
    
    p.age = 10; // [p setAge:10];
    
    int a = p.age; // [p age];
    
    p.name = @"Jack";
    
    NSString *s = p.name;
    
    NSLog(@"%@", s);
其实说到点语法的本质就是方法的调用,而不是访问成员变量,当使用点语法时,编译器会自动展开成相应的方法。切记点语法的本质是转换成相应的set和get方法,如果没有set和get方法,则不能使用点语法。如:

Stu.age=10;展开为:[stu setAge:10];

int  a=stu.age;展开为:[stu age];

编译器如何知道是set方法还是get方法?主要是看赋值。在OC中访问成员变量只有一种方式即使用-> 如stu->age,这种情况要求在@public的前提下。

另外,使用点语法时,应该注意,以下两种会出现出现的情况:、

(1)在set方法中,self.age=age;相当于是[self setAge:age];

(2)在get方法中,return self.age;相当于是[self age];

二 成员变量的作用域

局部变量、全局变量都有自己的作用域,成员变量也不例外,也有自己的作用域。变量的作用域主要分为四种:

(1)@public (公开的)在有对象的前提下,任何地方都可以直接访问。

(2)@protected (受保护的)只能在当前类和子类的对象方法中访问

(3)@private (私有的)只能在当前类的对象方法中才能直接访问

(4)@package (框架级别的)作用域介于私有和公开之间,只要处于同一个框架中就可以直接通过变量名访问

三 @property和@synthesize

@property用在@inteface中可以自动生成某个成员变量的setter和getter声明。例如用@property int age;就可以代替下面的两行:

- (int) age; //geter

- (void)setAge:(int)age; //setter

类似地,@synthesize用在@implementation中,用来自动生成setter和getter的实现,例如,@synthesize age = _age。注意,如果成员变量_age不存在,就会自动生成一个@private的成员变量_age。从新版本开始(4.2吧好像是),@synthesize已经不用了,因为@property已经可以自动生成声明和实现。

四 id类型

id在OC中是一个万能指针,可以指向任何的OC对象,相当于NSObject *,其定义如下。要注意,使用时,id后面不要加上*,例如id p = [Person new]。其局限性体现在,当调用一个不存在的方法时,编译器会马上报错。

typedef struct objc_class *Class; 
typedef struct objc_object { 
    Class isa; 
} *id; 
五 构造方法

对象的创建可以分为两步走:其中init方法就是构造方法,是用来初始化对象的方法,注意这是一个对象方法,一减号开头。默认初始化完毕后,所有成员变量的值都为0。

1>+ alloc 方法  分配存储空间

   2>- init 方法初始化

我们在实际开发过程中经常需要对构造方法进行重写,重写构造方法的目的:为了让对象创建出来,成员变量就会有一些固定的值。在重写构造方法的 过程中应该注意,先调用父类的构造方法([super init]),再进行子类内部成员变量的初始化,重写构造方法的规范:例如代码如下:

 

(1)一定是对象方法,以减号开头

(2)返回值一般是id类型

(3)方法名一般以initWith开头

@implementation Person

// 重写-init方法
//- (id)init
//{
//    // 1.一定要调用回super的init方法:初始化父类中声明的一些成员变量和其他属性
//    self = [super init]; // 当前对象 self
//    
//    
//    // 2.如果对象初始化成功,才有必要进行接下来的初始化
//    if (self != nil)
//    { // 初始化成功
//        _age = 10;
//    }
//    
//    // 3.返回一个已经初始化完毕的对象
//    return self;
//}

- (id)init
{
    if ( self = [super init] )
    { // 初始化成功
        _age = 10;
    }
    
    // 3.返回一个已经初始化完毕的对象
    return self;
}

@end






基于深度学习的生活垃圾检测与分类系统:YOLOv5、YOLOv6、YOLOv7与YOLOv8实现 本项目的目标是开发一个基于YOLO系列模型的生活垃圾检测与分类系统。数据集准备与标注:收集并标注生活垃圾图像数据集。模型训练:使用YOLOv5、YOLOv6、YOLOv7、YOLOv8等深度学习模型训练垃圾分类系统。UI界面设计:设计一个简洁的用户界面,支持图像或视频的上传与垃圾分类结果展示。实时垃圾检测与分类:通过摄像头进行实时垃圾检测和分类。结果展示与保存:展示检测结果,支持用户保存分类后的图像或视频。 阅读详情

相关推荐

用Python实现单层感知器:5分钟搞定逻辑与/或/异或分类(附避坑指南)

本文通过Python代码实战,详细讲解了单层感知器的核心原理与实现步骤,5分钟内即可完成逻辑与、或运算的分类任务。文章深入剖析了单层感知器的能力边界,解释了其无法解决异或(XOR)等线性不可分问题的根本原因,并提供了学习率设置、权重初始化等关键避坑指南,帮助初学者直观理解神经网络的基础。

ttt77的博客 1084

黑马程序员——01OC的基本语法

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、关键字 (1)OC基本上所有的关键字都是以@开头的 (2)下面列举一些常见的关键字:            @interface、@implementation、@end、@public、@protect、@private、@selector            @try

ssf1818的专栏 596

cadence capture CIS 之使用access创建数据库(.mdb)

cadence capture CIS 之使用access创建数据库(.mdb)准备工作新建数据库 准备工作 1、一台电脑; 2、安装 Microsoft access database; 新建数据库 打开你准备创建数据库的位置,右键单击——》新建——》 Microsoft access database(注意:文件格式要选*.mdb) 打开数据库文件,创建——》表; 对数据表进行编辑,编辑表头、编辑表的内容、增加表的数量; 编辑表头:选中要编辑的表——》表设计 编辑内容:类似于excel添

weixin_42256550的博客 3147

黑马程序员_OC基础01_基础语法

OC是在C语言的基础上加了一层

u014433523的专栏 468

护网日志分析基础

简要介绍日志分析,给出日志分析的步骤和思路。要求根据日志中的字符串特征,识别攻击者的攻击工具;根据日志中的行为特征,确定攻击者可能的攻击手段等。总结归纳护网中常见的中间件Tomcat、Apache、Weblogic、Nginx、Apache、IIS、MySQL、SQL Server、Oracle的日志路径和日志配置文件路径等。

m0_59302403的博客 3698

Cursor+Playwright MCP实战:如何用自然语言一键生成UI自动化测试脚本

本文探讨了如何利用Cursor与Playwright MCP实现自然语言驱动的UI自动化测试脚本生成。通过智能IDE与浏览器自动化协议的结合,开发者可以高效创建稳定的测试脚本,显著提升测试效率与维护性。重点介绍了MCP架构的优势、项目结构最佳实践及团队协作规范,为自动化测试带来革命性改进。

k8l9m0n的博客 441

黑马程序员——OC语言基础篇---基本语法、类

oc的基本语法以及类的基本知识

liufeng124的专栏 841

黑马程序员-OC类开发技巧

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 1.NSString 使用 @"12345"也是一个对象 oc .h与.m的分工 .h是声明 .m是实现 bogon:05oc whome$ touch 01oc.m bogon:05oc whome$ open 01oc.m #import //关于NSString

陨石的专栏 661

基于YOLOv8的端面小目标计数解决方案: 多头检测器+小缺陷到大缺陷一网打尽的GiraffeDet+Wasserstein Distance Loss | 助力工业小目标缺陷检测

端面小目标计数部署解决方案 | 亲测在工业小目标缺陷涨点明显,原始mAP@0.5 0.936提升至0.955

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1955

31、车载通信中的可见光通信(VLC)技术解析

本文详细解析了车载通信中可见光通信(VLC)技术的应用背景、优势及发展前景。对比传统RF通信技术(如DSRC),VLC利用LED照明设备实现高效、安全的车辆与车辆、车辆与基础设施之间的通信,具有频谱资源丰富、安全性高、无电磁干扰等优势。文章还探讨了VLC在交叉口交通控制、高速公路通信、自动驾驶等场景的应用潜力,展望了其在未来智能交通系统中的重要作用。

hill8的博客 318

黑马程序员-IOS基础之OC语法

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- Objective-C 一、基本语法 01、语法概述 OC了解 1> 在C语言的基础上,增加了一层最小的面向对象语法。 2> 完全兼容C语言。 3> 可以在OC代码中混入C语言代码,甚至是C++代码。 4> 可以使用OC开发Mac OS X平台和I

lxp1245121592的博客 713

mongodb在游戏开发领域的优势

目前游戏服务器使用mysql作为数据库的较多,然而,使用mongodb来作为存储层,在某些方面比mysql更为方便和适合。

littleschemer的博客 1698

黑马程序员——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

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

黑马程序员---【OC语言】01初识OC

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

xiaofei930306的专栏 524

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【黑马程序员】01-OC的特点

#import //oc导入头文件的方式 //主函数 int main() { //oc输出函数 NSlog(@"helloword"); }

y707043793的专栏 337

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

01.黑马程序员-简单的OC程序

#include #include int main() { printf("第一个OC程序\n“); return 0; }

Aaronandxj的专栏 576

黑马程序员——基础语法

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------ 1.标识符 1.1 OC语言中,对各种变量、方法和类等命名时使用的字符称为标志符。 1.2 OC标识符有如下命名规则:          标识符由字母、下划线“_”、数字组成          标识符必须以字母、下划线、美元符号开头 2.关键字 OC中一些具

水瓶座的LoveD的博客 388

黑马程序员——OC基础01—类和对象

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-一、面向对象之OC 1.入门之 hello world1)#import <Foundation/Foundation.h> 它是预处理指令,可以防止重复包含。 Foundation是头文件,包含了OC中大量的头文件。 2)OC的基类是NSObject; 3)NSLog(@“hello world”);不同于c语

Peide04271915的博客 497

黑马程序员--OC基本语法

voi------http://write.blog.youkuaiyun.com/postedit" target="blank">Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------                                          第六讲--oc的基本语法 01-oc的声明与方法    oc的声明也就是接口,简称API,放在.h

wk1170758545的专栏 405

黑马程序员---01基本语法

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

itheima_panc的专栏 546

黑马程序员_OC基础01_面向对象

--------------------- android培训、java培训、期待与您交流! -------------------- 一、面向对象、面向过程的区别(了解) 1、两种常见的编程思想: 面向过程编程、面向对象编程   (OC是面向对象的,C是面向过程的。面向对象和面向过程只是解决问题的两种不同思想) 2、面向过程编程:简称OPP,以

程序媛coco的专栏 1102

黑马程序员(自学IOS视频后的感受)

------http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------       今天总算看完IOS基础视频了,从同学建议我去培训IOS之后,我就在传智播客官网上下载了IOS视频,从当初只知道有苹果这么个名词到现在也已经知道苹果了以及和苹果相关的一些知识,也增长了我一些苹果知识的了

ixx__123的专栏 1250

黑马程序员--OC自学笔记---01OC简介、面向对象、类、方法

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------   1.   objective-c简称obj-c、OC 2.   动态绑定、动态检查、动态链接 3.   为什么用import来引入头文件(面试题) include和import都是引入头文件,import引入的头文件,可以防止重复包含。 Include它是使用预处理指令防止重

Bright 510

黑马程序员——oc之多态

-------android培训、java培训、iOS培训、.Net培训、期待与您交流! ---------- 多态性是个生物名词,用来表示生物体在生命周期中的不同形态,用在编程语言中则表示相同的方法名,但是却有不同的实现方式。或者说相同的名字,不同的类。我们来看一个示例: 01 #import

lucky2468的博客 374

[黑马程序员]13[OC语言]OC三大特性部分学习笔记总结

------- android培训、java培训、IOS培训、期待与您交流! ---------- OC三大特性   1.    封装 01. 基本语法   //set方法:成员变量的封装   #import   @interface Student : NSObject {     //@public 以后写成员变量除特殊情况,统统不许写@pu

astina2011的专栏 548
上一篇: 黑马程序员——OC---继承与多态
下一篇: 黑马程序员——OC---OC特有语法02
hityu
博客等级 码龄15年 1粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值