OC类中一些细节问题(对象类存储、类中结构体的用法)
一:OC中得方法名
一:对象的存储细节
类加载到代码区(包括类中得属性和方法)、对象动态加载到堆内存中、指向对象的指针存放在栈区。
三:定义类常见的错误
定义类的时候,常见的错误
1)类的定义不能嵌套
2)不要漏写 @end
3) 不要忘记写实现类(如果忘记写了,编译不会报错,运行时候才报错)
4)定义成员变量的大括号经常漏写
5) 如果不写@interface 只有 @implementation 这可以,但是会报警告,建议不要这么写
6)把方法的声明写到了声明成员变量的括号中了
四:类中结构体的问题:
#import <Foundation/Foundation.h>
typedef struct {
int year;
int month;
int day;
}MyDate;
//类的声明
@interface Student : NSObject
{
@public
NSString *_name;
MyDate _birthday; //MyDate是一个结构体
}
@end
//类的实现
@implementation Student
@end
int main(int argc, const char * argv[])
{
//实例化对象 stu
Student *stu = [Student new];
//赋值
stu->_name = @"雷阵子";
// stu->_birthday = {1999,11,11} 这种写法不行,_birthday在对象创建的时候,已经被初始化为0,不能在整体初始化了
// stu->_birthday.year = 1999;
// stu->_birthday.month = 11;
// stu->_birthday.day = 11;
//d1是一个结构体变量
MyDate d1={1988,11,11};
//把d1的值拷贝一份给_birthday
stu->_birthday = d1; // 值传递
比如:/*
MyDate date = {1990,3,9};
date = {1999,9,9}; // 会报错,就是结构体初始化后不能在定义
*/
五:NSString
NSString 的用法
NSString 是OC的一个字符串类
1)NSString 存放OC的字符串
NSString *str = @"l love china!";
2)既然是类,我们就可以实例化一个对象
NSString *s = [NSString new];
1)分配空间 2)初始化 3)返回地址
s = @"I love itcast";
3)格式化字符串
NSLog(@"%d,%f",a,b);
NSString *s2=[NSString stringWithFormat:@"xxxxx_%02d.jpg",i];
str = @"你好中国china!";
//计算字符串的长度的一个方法
//OC的字符串长度计算方法
//1、[str length],没有包含\0 ,就是实际的字符的个数
//2、把中文的一个汉字和普通的字母都当做1个字符
NSLog(@"str len = %lu",[str length]);
//c语言中的字符长度
//1、普通字符占1个字节
char *sss="China!";
//2、一个汉字占3个字节(UTF-8编码),一个字符还是占用1个
sss = "中国china!";
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥