OC基础小结2

一.结构体

结构体只能在定义的时候进行初始化

给结构体属性赋值
    + 强制转换: 系统并不清楚是数组还是结构体,需要在值前面加上(结构体名称)
    +定义一个新的结构体,进行直接赋值
    + 逐个赋值
注意点
    + 不要将进制间搞混

//因为结构体已经初始化为0了,再次初始化就报错了,但是可以逐个赋值。
    //p->_birthday = {1990,12,3};
    p->_birthday.year = 2014;
    p->_birthday.month = 05;
    p->_birthday.day = 12;
    NSLog(@"%@的生日是:%d年%d月%d 日",p->_name,p->_birthday.year,p->_birthday.month,p->_birthday.day);

//也可以整体赋值
    MyDate de={1993,11,11};
    p->_birthday = de;
    NSLog(@"%@的生日是:%d年%d月%d 日",p->_name,p->_birthday.year,p->_birthday.month,p->_birthday.day);

二.匿名对象
    没有名字的对象
    + [类名 new]->属性 = 值;
注意:
    + 无论对象有没有名字,只要调用new方法就会返回对象的地址
适用场景
    + 对象只使用一次
    + 匿名对象可以作为方法的实参
优点
    + 简化代码

---------------------------------------------------------------

三.OC多文件开发

1.为什么要使用多文件
      一个真正的iOS项目中可能会有成百上类,如果这些类都写在一个文件中,那么文件就会很大,想找到自己需要类都变的异常困难,开发效率低下.

一个iOS项目可能会有多个人开发,如果多个人同时修改一个文件,那么就很可能会产生冲突,比如这个增加一个方法,那个人把这方法删掉了。另外就是当把多个人写功能合并起来的时候,也非常困难,写到一个文件中,无法顺畅的进行团队合作。

[email protected]和@implementation的分工
      @interface就好像暴露在外面的时钟表面
      @implementation就好像隐藏在时钟内部的构造实现

  3.在OC中如何进行多文件开发?
  在工作中,通常把不同的类放到不同的文件中,每个类的声明和实现分开
       声明写在.h头文件中,
       实现写在相应的.m文件中去,
       类名是什么,文件名就是什么。
   在主函数以及类的实现文件中要使用#import包含相应的头文件。

  4.使用多文件开发好处
    显著提高团队协作的效率
    提高程序的开发速度
    提高程序的可维护性
    提高代码的可读性

--------------------------------------------------------

四.NSString

  1.NSString常见方法
  NSString是 Objective-C 中核心处理字符串的类之一

  创建常量字符串,注意使用“@“符号。
  创建空字符串,给予赋值。
  创建格式化字符串:占位符(由一个%加一个字符组成)

[NSString stringWithFormat:@"小明%i岁了", 30];

  2.NSString字符串长度计算
  通过调用NSString类的对象方法 length 可以获得字符串的长度
  字符串长度是指该字符串中一共有多个字符(无论是中文还是英文)

纯英文字符

    NSString *str = @"hmj";
    NSLog(@"length = %i", [str length]);
    输出结果:3

中英文混合

    NSString *str = @"hmj贺";
    NSLog(@"length = %i", [str length]);
    输出结果:4

纯中文

    NSString *str = @"梦洁";
    NSLog(@"length = %i", [str length]);
    输出结果:3

NSUInteger 就是 unsigned long
源码: typedef unsigned long NSUInteger;

五.pragma mark
  功能:简单来说就是对代码的分组,方便代码查找和导航用的它们告诉Xcode编译器,要在编辑器窗格顶部的方法和函数弹出菜单中将代码分隔开。一些类(尤其是一些控制器类)可能很长,方法和函数弹出菜单可以便于代码导航。此时加入#pragma指令(#pragma是一个编译指令)对代码进行逻辑组织很有效果。
  一个类里我们总会有一些方法的功能与性质是相差不多的,你可能会有把方法们分组的想法。Xcode已经有了类似的支持,它就是 #pragma mark。
  格式 

    分组: #pragma mark 分组(标识)名称

    分隔线: #pragma mark -
    分割线加分组: #pragma mark - 分组(标识)名称

---------------------------------------------------------------------

六.对象和方法的区别
  1.对象作为方法的参数
  对象作为方法参数传递是地址传递,因为对象是一个指针变量
  在方法内部,可以通过对象形参,访问该对象的成员变量(如果该对象的该成员变量的访问权限是public的)
  在方法内部,可以通过对象形参,调用该对象上的方法(给这个对象发送消息)

int main(int argc, const char * argv[])
{
    //    1.创建士兵对象
    Soldier *s1 = [Soldier new];
    s1->_name = @"jack";
    s1->_life = 10;
    s1->_level = kSoldierLevel1;

    //    2.创建枪对象
    Gun *gun = [Gun new];
    gun->_bulletCount = 100;

    //    3.射击
    [s1 fireByGun:gun];
}

@implementation Soldier

- (void)fireByGun:(Gun *)gun
{
    [gun shoot];
}

@end

  2.对象作为方法的返回值
  对象可以作为方法的返回值;
  对象返回值的实质是返回指向该对象的指针,该对象是存储在堆内存中的。
  由于堆内存是由程序员管理的,所以它不会因为函数结束而被销毁

@implementation Shop

- (Gun *)buyGun
{
    Gun *gun = [Gun new];
    gun->_bulletCount = 100;
    return gun;
}

@end

七.修改项目模版

  • 项目模版的项目

    • 工程名称:
    • 文件名称:
    • 创建者:
    • 创建时间:
    • 版权:
    • 修改人:
    • 修改时间:
  • 修改项目模板以及main函数中的内容
    • /Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates/Project Templates/Mac/Application/Command Line\ Tool.xctemplate/
  • 修改OC文件头部的描述信息
    • /Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates/File Templates/Source/Cocoa Class.xctemplate

-------------------------------------------------------------------

八.Xcode文档安装

  • Xcode文档安装的位置1:

    • /Applications/Xcode.app/Contents/Developer/Documentation/DocSets
  • 注意:拷贝之前最好将默认的文档删除, 因为如果同时存在高版本和低版本的文档, 那么低版本的不会显示
  • Xcode文档安装的位置2:
    • /Users/你的用户名/Library/Developer/Shared/Documentation/DocSets

      • 如果没有该文件夹可以自己创建一个

1.Xcode文档在线安装

  • 打开Xcode,首选项
  • 点击DownLoads下载文档

2.Xcode文档离线安装

  • 找到备份的文档

    • com.apple.adc.documentation.AppleiOS8.0.iOSLibrary.docset
  • 找到DocSets目录
    • /Applications/Xcode.app/Contents/Developer/Documentation/DocSets
  • 拷贝文件到该目录
  • 退出重新打开Xcode
    • 如果还不行,/Users/你的用户名/Library/Developer/Shared/Documentation/DocSets,看是否存在同名的或版本更新的,把它删掉
  • 注意: 如果文件夹中有版本更高的文档不会显示低版本文档

3.Xcode文档基本使用

  • 关键字说明

    • Getting Started —— 新手入门,一般来说,是给完全的新手看的。建议初学者看看,这里面有一些建立观念的东西,有了这些建立观念的东西,后面的学习就比较容易了。
    • Guides —— 指南,指南是Xcode里面最酷最好的部分,学会看指南则大多数情况完全不用买书。Xcode文档里面的指南,就是一个一个问题的,从一个问题,或者系统的一个方面出发,一步一步详细介绍怎么使用Cocoa库的文档。一般程序员比较熟悉的是Reference,就是你查某个类、方法、函数的文档时候,冒出来的东西。那些其实是一点一点的细碎知识,光看那些东西就完全没有脉络。而Guides就是帮你整理好的学习的脉络。
    • Reference —— 参考资料。一个一个框架一个一个类组织起来的文档,包含了每个方法的使用方法。
    • Release Notes —— 发布说明。一个iOS新版本带来了哪些新特性,这样的信息,熟悉新iOS,比较不同iOS版本API不同,都需要参考这些文档。
    • Sample Code —— 示例代码。苹果官方提供的一些示例代码,帮助你学习某些技术某些API。非常强烈建议学习的时候参考,一方面光看文档有时候还是很难弄明白具体实现是怎么回事儿。另外一方面这些示例代码都是苹果的工程师写的,你从示例代码的变迁可以看到苹果官方推荐的代码风格流变。
    • Technical Notes —— 技术说明。一些技术主题文章,有空的时候可以浏览一下。往往会有一些收获。
    • Technical Q&A —— 常见技术问答。这是技术社区里面一些常见问题以及回答的整理。
    • Video —— 视频。目前主要是WWDC的视频,实际上是登录到开发者网站上去浏览的,这里就是快捷方式。想深入学习的话,一定不能错过,大量的看,不仅可以学好技术,还可以练好英文。
      • 这里面的Reference、Release Notes、Sample Code、Technical Notes、Technical Q&A,一般来说只是备查的。主要要看的是Getting Started和Guides。

4.如何阅读文档?

  • 快速查询文档

    • 按住Option键查询
    • 通过Quick Help查询
  • 搜索帮助
  • 阅读文档
时间: 2024-09-30 13:29:51

OC基础小结2的相关文章

四.OC基础--1.文档安装和方法重载,2.self和super&static,3.继承和派生,4.实例变量修饰符 ,5.私有变量&私有方法,6.description方法

四.OC基础--1.文档安装和方法重载, 1. 在线安装 xcode-> 系统偏好设置->DownLoads->Doucument->下载 2. 离线安装 百度xcode文档 3. 方法重载: 是指在一个类中定义多个同名的方法 在OC中没有重载 2.self和super&static, self和super: 1. self理解: 谁调用当前方法, self就代表谁. 比如: 在对象方法中,self代表的是对象, 因为只有对象才可以调用对象方法 在类方法中, self代表的

OC基础 可变字典与不可变字典的使用

OC基础 可变字典与不可变字典的使用 1.不可变字典 1.1创建不可变字典 //创建字典 //注意: //1,元素个数是偶数 //2,每两个元素是一个键值对 //3,值在前,键在后 NSDictionary *dic = [[NSDictionary alloc] initWithObjectsAndKeys:@"huang",@"name",@"30",@"age", nil]; NSLog(@"%@",

OC基础(23)

NSArray基本概念 NSArray 遍历 NSArray排序 NSArray文件读写 NSArray 与字符串 *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } a { color: #4183C4; } a.absent { color: #cc0000; } a.anchor { display: block; padding-left: 30p

黑马程序员--oc基础第六篇

六. oc基础知识(内存管理下) 总结:内存管理代码规范 1.只要调用alloc那么就必须调用release: 2.set方法的代码部分 *基本数据类型直接赋值. *如果是oc对象类型 - (void) setCar:(Car *)car { if(_car!=car) { [_car release]; _car=[Car retain]; } } 3.dealloc 部分的代码规范 *一定要[super dealloc ]放在最后面. *对self(当前)所拥有的其他对象做一次release

iOS开发OC基础:OC基础概念总结,OC面向对象的思想

一.什么是OOP: OOP(Object Oriented Programming):面向对象编程 二.面向对象和面向过程的区别: 面向过程编程:分析解决问题的步骤,实现函数,依次使用面向对象编程:分解问题组成的对象,协调对象间的联系和通信,解决问题. 面向过程是以事件为中心,关心的是完成这个事件的详细步骤:面向对象是以事物为中心,关心的是事物应该具备的功能,而完成一个事件只是事物所有功能里面的一个小功能(以过程为中心,以对象为中心) 三.类和对象 对象定义了解决问题的步骤中的行为,不刻意完成一

iOS开发OC基础:OC属性的一些概念和基本使用

一.属性简介 //属性是OC2.0之后新出的一种语法,能让我们快速的生成setter以及getter方法,大大简化代码 二.如何定义一个属性 //@property 属性关键字,用来定义属性 //NSString * 属性的类型 //name 属性的名字. //@property 只是生成的setter以及getter方法的声明.@property NSString *name; 三.属性的使用注意事项//如果在.m文件中我们自己实现了setter以及getter方法,则编译器就不会再帮我们生成

iOS开发OC基础:Xcode中常见英文总结,OC常见英文错误

在开发的过程中难免会遇到很多的错误,可是当看到系统给出的英文时,又不知道是什么意思.所以这篇文章总结了Xcode中常见的一些英文单词及词组,可以帮助初学的人快速了解给出的提示.多练习,就肯定能基本掌握. expression:表达式assignable:赋值variable:变量redefinition:重复定义type:类型conflicting:冲突项invalid:无效的conversion:转换specifier:说明符indent:缩进operands:运算对象.操作数binary:二

iOS开发OC基础:OC的内存管理

OC内存管理的基础知识 /** //             *  当对一个对象autorelease时,会将该对象放到离它最近的自动释放池,当自动释放池将要销毁时,会对自动释放池中的对象发送release消息,让对象的引用计数减1,(切记,是将对象的引用计数减1,而不是回收空间.) //             */ /** *  如果相对一个对象做copy操作,就必须让该类服从NSCopying协议,并且实现协议中的- (id)copyWithZone:(NSZone *)zone方法 */

iOS开发OC基础:OC中的分类(类目)

//分类,category,(类目) //为没有源代码的类添加方法 //一定要注意,只能添加方法,不能添加实例变量 /** *  分类 类的定义也是分为接口部分和实现部分 接口部分:以@interface开头 + 类名 后跟小括号,小括号内填写的是分类名 @end结束 在@interface 与@end 之间添加方法. */ //分类为原类添加的方法,就相当于原类具有该方法,可以正常调用 因为涉及到几个分类的创建,所以就直接上传代码了,其实代码也不多,只是怕大家在建立分类的时候会混淆,所以直接把