Objective-C研究院之常用数据(二)

【Unity3D优化】优化内置shader的内存占用 在打AB包的过程中,并不会把这些Built-in的shader单独打包,并与材质球和预设体做好依赖,因此打AB包时,Unity会自行在材质球和预制体的AB包内每一个都包含进去用到的Built-in的Shader,而且运行时,由于加载的是不同的AB包,shader也是不同的实例,占用的也是多份内存。结合项目特点可以分析,由于项目里使用了大量的粒子特效,一些特殊的效果,会给特效师写定制的shader,但是这些常见的效果,特效师直接使用了Unity Built-in的shader。继续优化内存占用。 阅读详情

原创文章如需转载请注明:转载自雨松MOMO程序研究院本文链接地址:Objective-C研究院之常用数据(二)

由于工作重心发生了改变,Android开发暂时不会继续投入经历。MOMO最近在自学IOS游戏开发 哇咔咔~~目前还在学习阶段此篇文章主要用于备忘,欢迎各位大牛们给我多多虐虐我 互相学习~哇咔咔~~

在xcode中创建项目工程的方法在上一章已经介绍,着一篇主要介绍Objective-C语言中的一些常用数据结构

HelloWorldViewController.m类中

我们的测试语法代码添加在viewDidLoad方法中

1- (void)viewDidLoad
2{
3    [super viewDidLoad];
4    //程序启动界面显示之前会调用这个方法
5        //所以将语法代码添加在这里
6}

 1.整型 (int) 浮点型 (float, double)  短长整型(short, long)

常用数据类型与c语言基本一样 难怪是c语言的超集

01- (void)viewDidLoad
02{
03    [super viewDidLoad];
04    //程序启动界面显示之前会调用这个方法
05    //所以将语法代码添加在这里
06 
07    //整型
08    int i = 100;
09    //浮点型
10    float f = 1.1;
11    //双浮点型
12    double d = 2.2;
13    //短整型
14    short int si = 200;
15    //长整型
16    long long int ll = 123324123234123L;
17 
18    //输出数据与内存中所占字节数
19    //整型
20    NSLog(@"i = %d size = %lu byte ",i, sizeof(i));
21    //浮点型
22    NSLog(@"f = %f size = %lu byte",f,sizeof(f));
23    //双浮点型
24    NSLog(@"d = %e size = %lu byte",d,sizeof(d));
25    //短整型
26    NSLog(@"si = %hi size = %lu byte",si,sizeof(si));
27    //长整型
28    NSLog(@"ll = %lli size = %lu byte",ll,sizeof(si));
29}

Log打印结果

2.字符串 NSString*  与  char* 

01- (void)viewDidLoad
02{
03    [super viewDidLoad];
04    //程序启动界面显示之前会调用这个方法
05    //所以将语法代码添加在这里
06    NSString * str = @"MOMO";
07    char *c = "15810463139";
08 
09    //将NSString 转换为char *
10    const char *change = [str UTF8String];
11 
12    //输出log
13    NSLog(@"str = %@ size = %lu", str,sizeof(str));
14    NSLog(@"c = %s size = %lu", c, sizeof(c));
15    NSLog(@"change = %s size = %lu", change, sizeof(change));
16 
17}

Log打印结果

字符串格式化

使用stringWithFormat 方法来格式化字符串 

意思就是将整型 字符型 等等 合并成一个NSString*类型

01- (void)viewDidLoad
02{
03    [super viewDidLoad];
04    //程序启动界面显示之前会调用这个方法
05    //所以将语法代码添加在这里
06    NSString * str = [NSString stringWithFormat:@"姓名:%@ 年龄:%d 邮箱:%@" ,@"雨松momo",25,@"xuanyusong@gmail.com"];
07 
08    NSLog(@"str = %@",str);
09 
10}

 Log 输出结果

3.布尔值

宏定义 真为YES 假为NO 

因为Objective-C 是C语言的超集 所以在代码中写 true 和false 也是可以运行通过的

这里毕竟是Objective-C 所以还是建议使用YES 和  NO

01- (void)viewDidLoad
02{
03    [super viewDidLoad];
04    //程序启动界面显示之前会调用这个方法
05    //所以将语法代码添加在这里
06 
07    bool a = false;
08    bool b = true;
09 
10    if(a == b)
11    {
12        NSLog(@"a与b相等");
13    }
14 
15    if(a != b)
16    {
17        NSLog(@"a与b不等");
18    }
19 
20    bool c = YES;
21    bool d = YES;
22 
23    if(c == d)
24    {
25        NSLog(@"c与d相等");
26    }
27 
28    if(c != d)
29    {
30        NSLog(@"c与d不等");
31    }
32 
33}

 Log打印结果

4 .数组与字典

NSArray 数组: 使用它创建数组后,就不可以继续向这个数组中添加或者删除元素。

 这个数组中可以储存任意类型object的对象指针  但是不能用处储存数据类型 比如int bool char 等等

 下面这行代码中我将三个字符串和self 指针储存在了mArray这个数组中

1//初始化不可变数组
2mArray =[[NSArray alloc] initWithObjects:@"雨松MOMO",@"15810463139",@"xuanyusong@gmail.com",self,nil];

 遍历方法一 : 很普遍java 语言 c 语言都这样来遍历

1int count = [mArray count];
2for (int i = 0; i < count; i++) {
3    NSLog(@"固定数组 %@", [mArray objectAtIndex:i]);
4}

 遍历方法二: objective-c 2.0 引入的快速枚举法 不仅速度快 并且安全性高,推荐使用这种方式来遍历.

1for (NSString * str in mArray) {
2     NSLog(@"固定数组 %@", str);
3}

 打印Log信息,最后一项为self指针 ,所以将地址打印了出来。

NSMutableArray数组:它是一个可以变化的数组,数组创建完后还可以动态的向数组中添加与删除元素,并且可以向指定位置插入元素,基本上和链表差不多。

1//初始化可变数组
2mListArray=[NSMutableArray array];

 addobject方法用于向数组中添加元素

1//添加数组
2- (void)addArray: (NSObject *) str
3{
4    [mListArray addObject:str];
5}

 removeObject方法用于删除元素

1//删除数组
2-(void) deleteArray:(NSString *)str
3{
4    [mListArray removeObject:str];
5 
6}

 replaceObjectAtIndex 方法可以修改数组中的某一个元素

第一个参数为 索引的id

第二个参数为修改对象的指针

1//修改数组中的元素
2-(void)changeArray:(int)ID:(NSObject *) str
3{
4    [mListArray replaceObjectAtIndex:ID withObject:str];
5}

insertObject方法用于向数组中插入一个元素

第一个参数  插入对象的指针

第二个参数  插入的索引

1//向数组中插入一个元素
2-(void)insertArray:(int)ID:(NSObject *) str
3{
4    [mListArray insertObject:str atIndex:ID];
5}

 创建MyClass对象

01- (void)viewDidLoad
02{
03    [super viewDidLoad];
04 
05    mMyclass  = [[MyClass alloc] init];
06 
07    //在可变数组中添加一个值
08    [mMyclass addArray:@"雨松"];
09    [mMyclass addArray:@"宝贝"];
10    [mMyclass addArray:@"MOMO"];
11    [mMyclass addArray:[[MyClass alloc] init]];
12 
13    [mMyclass changeArray:1:@"哇咔咔"];
14 
15    //输出所有信息
16    [mMyclass printArray];
17 
18}

MyClass.m

01#import "MyClass.h"
02 
03@implementation MyClass
04 
05//重写init方法好比java语言类的构造函数
06//如果不重写的话init的时候父类会帮我们返回self指针
07//重写的好处是在初始化self指针的同时可以初始化一些数据
08- (id)init
09{
10    self = [super init];
11    if (self) {
12        //给成员变量fuzhi
13        mID = 100;
14        //初始化不可变数组
15        mArray =[[NSArray alloc] initWithObjects:@"雨松MOMO",@"15810463139",@"xuanyusong@gmail.com",self,nil];
16 
17        //初始化可变数组
18        mListArray=[NSMutableArray array];
19 
20    }
21 
22    return self;
23}
24 
25//添加数组
26- (void)addArray: (NSObject *) str
27{
28    [mListArray addObject:str];
29}
30 
31//删除数组
32-(void) deleteArray:(NSString *)str
33{
34    [mListArray removeObject:str];
35 
36}
37 
38//修改数组中的元素
39-(void)changeArray:(int)ID:(NSObject *) str
40{
41    [mListArray replaceObjectAtIndex:ID withObject:str];
42}
43 
44//向数组中插入一个元素
45-(void)insertArray:(int)ID:(NSObject *) str
46{
47    [mListArray insertObject:str atIndex:ID];
48}
49 
50//遍历数组中的数据
51//用log输出
52- (void)printArray
53{
54    for (NSString *str in mArray) {
55        NSLog(@"固定数组 %@", str);
56    }
57 
58    for (NSString *str in mListArray) {
59        NSLog(@"可变数组数组 %@", str);
60    }
61 
62}
63@end

内容比较少,代码就不上传了 如果代码中有问题还请大家告诉MOMO,我会及时的更正,大家共同学习 哇咔咔~~~


基于STM32的智能宠物喂食系统设计与实现(代码+PCB ) STM32;DHT11;本系统的软件程序基于Keil MDK-ARM V5集成开发环境进行编写和编译。Keil MDK是ARM公司官方推荐的嵌入式开发工具,支持ARM Cortex-M系列微控制器的程序开发,内置ARM C/C++编译器、调试器和仿真器,具有代码编辑、语法高亮、工程管理和在线调试等功能,是STM32开发领域应用最为广泛的IDE之一。 阅读详情

相关推荐

ANSYS Help USER300

USER 300概述单元描述输入数据假设与限制条件 概述 单元描述 Mechanical APDL提供了一种方便的方法来创建自定义的单元,命名为USER300,可以创建几乎任何单元类型。 UserElem子程序为Mechanical APDL在单元类型创建上提供了一个接口,可传递用户自定义单元创建时所需的所有数据,然后从自定义单元返回所有数据和结果,以更新数据库和文件。因为通过接口可以访问数据库和文件信息,所以很少需要了解Mechanical APDL数据库程序和文件结构。该接口还提供了获取Mechanic

weixin_47019765的博客 2235

Objective -C 补充

本文转载于光远的iOS开发专题http://blog.youkuaiyun.com/u014165686/article/details/38497775第一部分 基本概念OC概述OC是一种能够完成复杂面向对象编程的简单的计算机设计语言。通过提供用于定义类和方法的语法,它扩展了标准的c语言。它还提供了类和接口(任何类采用)的动态扩展。面向对象编程1. 面向对象 和 面向过程面向对...

weixin_34402408的博客 224

海康工业相机SDK开发实战:从环境搭建到实时图像采集(附避坑指南)

本文详细介绍了海康工业相机SDK在Windows平台上的开发实战流程,涵盖从环境搭建、运行时库路径配置到实时图像采集的全过程。重点解析了MVS SDK部署、设备连接、参数设置及图像处理等核心环节,并提供了实用的避坑指南和错误排查方法,帮助开发者构建稳定的机器视觉系统。

weixin_29248611的博客 846

Objective-C语法之常用数据的那些事儿(二)

Objective-C语法之常用数据结构雨松MOMO原创文章如转载,请注明:转载至我的独立域名博客雨松MOMO程序研究院,原文地址:http://www.xuanyusong.com/archives/585由于工作重心发生了改变,Android开发暂时不会继续投入经历。MOMO最近在自学IOS游戏开发 哇咔咔~~目前还在学习阶段此篇文章主要用于备忘,欢迎各位大牛们给我多多虐虐我 互相学习~哇咔咔

雨松MOMO的程序世界专栏 9135

电商产品组合策略:引流品与利润品的实战方法论

在电商运营中,产品组合策略是提升流量转化与利润增长的核心技术。其基本原理是通过数据化选品构建产品矩阵,利用引流品吸引用户流量,再通过利润品实现商业变现。这种策略不仅能优化广告投放的ROAS(广告投入产出比),还能显著提升客单价。技术实现上需要结合Google Analytics等工具进行归因分析,并运用动态库存管理模型控制风险。该方案特别适用于Amazon、Shopify等电商平台,能有效解决跨境电商业内流量获取与利润创造的平衡难题。通过实战案例可见,合理的产品组合可使客单价提升30-50%,是电商运营必备

weixin_42522009的博客 350

UVC协议在STM32H7上的移植实战案例

手把手带你把UVC协议移植到STM32H7平台,重点解决USB高速枚举、视频流控制与YUV数据打包等关键问题。基于HAL库实现符合UVC 1.5规范的即插即用摄像头功能,让嵌入式设备轻松变身标准UVC视频源。

weixin_42437253的博客 397

Objective-C研究院之数组对象

使用数组对象创建的数组功能非常强大,在Java语言或者C语言中定义的数组必须满足数组中的每一个元素必须是同样的类型。而Objective-C语言可以在Array数组中放任意类型的数据,值得注意的是只能放指向这个对象的指针,如果直接放int ,char,double 等等,是不行的. 1.不可变数组对象 使用NSArray关键字创建一个不可变的数组,一旦初

hexon804的专栏 586

Kotlin原生AI Agent框架Koog:为JVM开发者打造类型安全、企业级智能体开发方案

AI Agent作为当前人工智能应用开发的核心范式,通过赋予大语言模型(LLM)自主规划、工具调用和环境交互能力,正在重塑软件智能化进程。其技术原理基于智能体架构,通过提示工程、函数调用和记忆机制,将LLM从单纯的文本生成器转变为能够执行复杂任务的工作流引擎。这一技术价值在于显著降低了构建智能应用的开发门槛,同时保持了高度的灵活性和可扩展性。在实际应用场景中,AI Agent广泛落地于智能客服、代码助手、数据分析自动化等领域,成为连接大模型能力与具体业务需求的关键桥梁。本文聚焦的Koog框架,正是针对JVM

weixin_42594419的博客 395

Objective-C研究院之词典对象(八)

Objective-C研究院之词典对象(八) 发布五.01, 2012分类【Objective-C研究院之语法】 原创文章如需转载请注明:转载自雨松MOMO程序研究院本文链接地址:Objective-C研究院之词典对象(八) 做过Java语言 或者 C语言 开发的朋友应该很清楚 关键字map 吧,它可以将数据以键值对儿的形式储存起来,取值的时候通过KEY就可以

zhenweicao的专栏 575

Unity 游戏实例开发集合 之 Car Racing 2D (2D赛车) 休闲小游戏快速实现

Unity 游戏实例开发集合 之 Car Racing 2D (2D赛车) 休闲小游戏快速实现 目录 Unity 游戏实例开发集合 之 Car Racing 2D (2D赛车) 休闲小游戏快速实现 一、简单介绍 二、Car Racing 2D (2D赛车) 游戏内容与操作 三、相关说明 四、游戏代码框架 五、知识点 六、游戏效果预览 七、实现步骤 八、工程源码地址 九、延伸扩展 一、简单介绍 Unity 游戏实例开发集合,使用简单易懂的方式,讲解常见游戏的开发实现过程,方便

仙魁XAN 7702

别再死记硬背了!一张图搞懂无刷电机半桥与全桥驱动的核心差异(附避坑指南)

本文深入解析无刷直流电机的半桥与全桥驱动方式的核心差异,提供直观对比与选型指南。半桥驱动结构简单、成本低,适合低要求场景;全桥驱动性能优越但复杂,适用于高精度控制。文章还包含实战避坑指南,帮助工程师优化驱动方案选择与应用。

weixin_29290947的博客 319

Objective-C研究院之数组对象(七)

Objective-C研究院之数组对象(七) 发布五.01, 2012分类【Objective-C研究院之语法】 原创文章如需转载请注明:转载自雨松MOMO程序研究院本文链接地址:Objective-C研究院之数组对象(七)       使用数组对象创建的数组功能非常强大,在Java语言或者C语言中定义的数组必须满足数组中的每一个元素必须是同样的类型。而Objec

zhenweicao的专栏 1088

一分钟了解OpenSpec (规格)

OpenSpec是由Fission AI开源的轻量级规范驱动开发(SDD, Spec-Driven Development)CLI工具。它专为AI编程助手(如Cursor、Claude Code)设计,核心是**“先约定,后编码”:在AI写代码前,先通过结构化规范文档达成共识,让开发过程可预测、可审计、可协作**。轻量无侵入:单CLI、无依赖、不改造项目、1分钟接入存量友好:增量Spec、不重构旧文档、1→n王者完全可控:每步审查、AI按图施工、零返工协作利器。

h a 6 6 6 c k 为 你解决复杂难题! 2754

Objective-C之父Brad J. Cox去世,他推动了今天苹果的软件生态

本文转载自 机器之心 近日,讣告网站 Legacy.com 发布消息:Objective-C 之父 Brad J. Cox 博士于 2021 年 1 月 2 日在自己的家中逝世,享年 77 岁。 如果你是苹果生态的一位开发者,那你对 Objective-C 一定不会陌生。这门语言成就了苹果强大的软件生态,也因为苹果硬件的畅销而一路高歌猛进,挺进各大编程语言排行榜的前几名。作为一位计算机科学家,Brad Cox 的主要成就是和 Tom Love 一起创建了 Objective–C。此外,他还以在软件工

m0_46163918的博客 6165

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

IEM模型,地表粗糙度模拟

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

Objective-C研究院之集合对象(九)

原创文章如需转载请注明:转载自雨松MOMO程序研究院本文链接地址:Objective-C研究院之集合对象(九)       集合对象的关键字是NSSet与NSMutableSet。前者是不可变集合,后者是可变集合,Objective-C语言中大部分数据结构都存在可变与不可变两种数据。这里的集合很像Java语言与C语言中的Set,用法基本一样。但是在Objective-C语言中同一个集合可以储

menuconfig的专栏 1103

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Objective-C 之父 Brad Cox 逝世,创建过乐队、推动苹果软件生态

整理 | 郑丽媛 出品 | 优快云(ID:优快云news) 本以为熬过跌宕的 2020 年,我们总该迎来充满希望的 2021。可惜新年伊始,我们就得知了一条令人悲痛的消息:Objective-C 之父 Brad Cox 于 2021 年 1 月 2 日于自己家中逝世,享年 77 岁。 一、奶牛场长大、爱音乐的程序员 Brad Cox 于 1944 年 5 月 2 日出生在美国佐治亚州的本宁堡,在一家奶牛场长大。环境并没有局限他的理想,他发现他对科学的兴趣与日俱增。求学期间,他拿到了弗曼大学有机化学与数

优快云资讯 1995

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Objective-C语法之词典对象的那些事儿(八)

Objective-C语法之词典对象的那些事儿雨松MOMO原创文章如转载,请注明:转载至我的独立域名博客雨松MOMO程序研究院,原文地址:http://www.xuanyusong.com/archives/421      做过Java语言或者 C语言开发的朋友应该很清楚关键字map 吧,它可以将数据以键值对儿的形式储存起来,取值的时候通过KEY就可以直接拿到对应的值,非常方便。在Objecti

雨松MOMO的程序世界专栏 8497

Objective-C语法之数组对象的那些事儿(七)

Objective-C语法之数组对象的那些事儿雨松MOMO原创文章如转载,请注明:转载至我的独立域名博客雨松MOMO程序研究院,原文地址:http://www.xuanyusong.com/archives/412      使用数组对象创建的数组功能非常强大,在Java语言或者C语言中定义的数组必须满足数组中的每一个元素必须是同样的类型。而Objective-C语言可以在Array数组中放任意类

雨松MOMO的程序世界专栏 1万+

年度编程语言锁定Objective-C

虽然2011年才刚过半,但随着iPhone和iPad平台市场领导地位的确立和Apple各系统不断推陈出新,从市场占有的趋势来看,Objective-C成为年度编程语言无疑。 TIOBE编程语言排行榜每年初都将统计评出上年度的最佳编程语言大奖,获奖的编程语言被认为在该年度市场份额增长及用户认可度方面获得了最为突出的成绩。 历年获奖的编程语言包括2004年的PHP、2005年的Java、2006年...

《程序员》官方BLOG 331

Objective-C语法之集合对象的那些事儿(九)

Objective-C语法之集合对象的那些事儿雨松MOMO原创文章如转载,请注明:转载至我的独立域名博客雨松MOMO程序研究院,原文地址:http://www.xuanyusong.com/archives/425       集合对象的关键字是NSSet与NSMutableSet。前者是不可变集合,后者是可变集合,Objective-C语言中大部分数据结构都存在可变与不可变两种数据。这里的集合很

雨松MOMO的程序世界专栏 5403

苹果开发大师 Objective-C 之父 Brad J. Cox 逝世,享年77岁。

点击上方“逆锋起笔”,公众号回复编程资源领取大佬们推荐的学习资料 编译:芒果果丨发自 思否编辑部据外媒报道,编程语言 Objective-C 之父 Brad J. Cox 博士已于20...

code小生 385
上一篇: Objective-C研究院之基础语法(一)
下一篇: Objective-C研究院之NSString字符串(三)
menuconfig
博客等级 码龄19年 713粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值