首页 > 代码库 > OC类中一些细节问题(对象类存储、类中结构体的用法)
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!";
OC类中一些细节问题(对象类存储、类中结构体的用法)