OC学习笔记 - OC基础2

字数 603阅读 32

本章知识点:NSString,结构体作为对象的属性,#pragma mark,匿名对象,修改项目模版

NSString

  1. C语言中的字符串不是对象
char *name1 = “xy”;
char name2[] = “xxy”;

OC中的字符串是一个对象
正是因为OC中的字符串是一个对象, 所以它就具备了很多功能

NSString *str = @"lk";
//注意: 输出C语言的字符串使用%s
//输出OC的字符串使用%@,  %@就专门用于输出对象类型的
IPhone *p = [IPhone new];
NSLog(@"content = %s", [p loadMessage]);
NSLog(@"content = %@", [p loadMessage]);
  1. 计算字符串的长度
    C语言中:
// 包含\0
size_t size = sizeof(name);
printf("size = %lu\n", size);    
// 不包含\0
size_t length = strlen(name);
printf("length = %lu\n", length);

OC中:

NSString *str = @“Ring”;
NSUInteger len = [str length];
NSLog(@"len = %lu", len);

结构体作为对象的属性

typedef struct {
     int year;
     int month;
     int day;
} Date;

@interface Student : NSObject
{
    @public
     NSString *_name;
     Date _birthday;
}
@end
  1. 结构体只能在定义的时候初始化
    系统并不清楚它是数组还是结构体
  2. 初始化结构体属性
    方法一:强制转换
stu->_birthday = (Date){1986, 1, 15};

方法二:定义一个新的结构体,给d赋值,将d赋值给_birthday

Date d = {1986, 1, 15};
stu->_birthday = d;

方法三:分别赋值

stu->_birthday.year = 1986;
stu->_birthday.month = 1;
stu->_birthday.day = 15;

pragma mark

  1. pragma mark不属于Objective-C,而是Xcode的工具
  2. pragma mark实质上是让Xcode在其Function Menu内打上一些记号,Function Menu列出程式档内的class、function、method,这是Xcode让使用者可以快速查看一个程式档案裡所有class、method、function的工具,pragma mark则是在Function Menu内作记号(mark),帮助阅读程式

匿名对象

  1. 匿名就是没有名字, 匿名对象就是没有名字的对象
  2. 有名字的对象
    只要用一个指针保存了某个对象的地址, 我们就可以称这个指针为某个对象
//p为Person对象
Person *p =[Person new];
  1. 没有名字的对象
    无论有没有名字, 只要调用new方法都会返回对象的地址
    每次new都会新开辟一块存储空间
    [Person new]->_age = 30;
  2. 匿名对象的应用场景
    1 当对象只需要使用一次的时候就可以使用匿名对象
    2 匿名对象可以作为方法的参数(实参)

修改项目模版

  1. 修改项目模板以及main函数中的内容 /Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates/Project Templates/Mac/Application/Command Line Tool.xctemplate/
  2. 修改OC文件头部的描述信息
    /Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates/File Templates/Source/Cocoa Class.xctemplate
  3. Xcode文档安装的位置:
    1 /Applications/Xcode.app/Contents/Developer/Documentation/DocSets
    注意: 拷贝之前最好将默认的文档删除, 因为如果同时存在高版本和低版本的文档, 那么低版本的不会显示
    2 /Users/你的用户名/Library/Developer/Shared/Documentation/DocSets
    注意:如果没有该文件夹可以自己创建一个

推荐阅读更多精彩内容