ios开发学习笔记(1)

时间:2021-11-05 16:34:01

objective-c基础总结

第一二章

1.application:didiFinishLauchingWithOptions:程序启动后立即执行

2.启动界面代码格式:
self.window = [UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
//1.从Infor.plist中取出版本号
NString *version = [NSBundle mainBundle].infoDictionary[key];
//2.从沙盒中取出上次存储的版本号
NSString *saveVersion = [[NSUserDefaults standaryUserDefaults] objectForKey:key];

if(([version isEqualToString:saveVersion])){
//如果不是第一次使用版本
//显示状态栏
application.statusBarHidden= NO;
//等待写
//self.window.rootViewController = [[*** alloc] init];

}
else
{
//版本号不一样 第一次使用新版本
//将新版本号写入沙盒
[[NSUserDefaults standardUserDefaults] setObject:version forkey:key];
[[NSUserDefaults standartUserDefaults] synchronize];
//显示版本新特性界面
self.window.rootViewController = [[*** alloc] init];
}
[self.window makeKeyAndVisible];

return YES;

3.管理快照:Xcode快照是一种功能有限的版本控制(适用于中小型项目)

4.CGRectMake使用前两个数值表示文本标签距离离屏幕上边缘和下边缘的位置,后两个数值表示文本标签的宽度和高度

5.info.plist结尾文件:描述项目本身的属性。必须在什么地方设置应用程序的图标、启动图像、支持的设备朝向等。项目导航器,可视化设置众多的plist选项

6.用于常规屏幕的图表明为Icon.png,而用于Retina屏幕的图标名为Icon@2x.png,当应用程序在使用Retina屏幕的设备上运行时,如果它被要求显示一幅图像,它将自动使用包含后缀@2x(名称与指定的名称相同)的图像资源。这让开发人员无需修改应用程序的任何代码就能支持Retina屏幕。还可以可视化Summary选线卡的Deployment Info部分设置启动图像。对于iPhone,只能设置纵向启动图像,但iPad支持横向和纵向启动图像。

7.设置状态栏:Status bar is initially Hidden(默认隐藏状态栏) NO显示状态栏

第三章 探索Apple平台语言Objective-C

1.(1)OOP(面向对象编程)使用的指令类型与过程型编程相称,但通过组织它们让应用程序易于维护,并尽可能重用代码。在OOP中,您将创建对象,其中存储了描述某种东西的数据以及操纵这些数据的指令。(2)OOP的另一个重要的方面是继承

2.术语介绍:
》类:定义对象及其功能的代码,通常由头文件/接口文件和实现文件组成。
》子类:建立在另一个类的基础之上并添加了额外的功能。您在iOS开发中使用的几乎任何东西都是其他某种东西的子类,它继承了父类的所有功能和属性
》超类/父类:另一个类继承的类
》单例:在程序的整个生命周期内,只能实例化一次的类。例如,获悉设备朝向的类被实现为单例,因为只有一个返回朝向信息的传感器。
》对象/实例:在代码中调用并出于活动状态的类。类是让对象能够工作的代码,而对象是处于活动状态的类。对象也被称为类的实例。
》实例化:根据类创建活动对象的过程
》实例方法:在类中实现的一项基本功能。对于提醒类,这可能是为给定提醒设置警报的setAlarm
》类方法:类似于实例方法,但使用与根据类创建的所有对象。
》消息:当您需要使用对象的方法时,您给对象发送一条信息,这有称为成为调用方法
》实例变量:对象特有的一项信息的存储位置。
》变量:信息的存储位置。不用于实例变量,常规变量通常只能在定义它的方法内使用。
》参数:调用方法时向它提供的一项信息。如果要调用提醒对象的“设置警报”方法,则必须提供要设置的时间。在这种情况下,该时间将是setAlarm方法的一个参数
》属性:使用特殊编译指令配置的一个实例变量,这样可在代码中方便地访问它
》Self:一种在方法中引用当前对象的方式。在应用程序中使用实例方法或属性时,必须使用特定对象限定它。在类中编写访问其方法或属性的代码时,可使用self来引用当前对象。

3.类的接口文件和实现文件的名称通常与类名相同。.h接口文件 .m实现文件。协议是Objective-C特有的一种功能,需要编写的方法被集合在一起,并用同一个名称标识,这被称为协议

4.@property编译指令,与另一个名为synthesize的命令结合使用,以简化与接口中定义的实例变量的交互方式。@property和@synthesize的作用是为编写设置函数和获取函数,并且优雅方便使用

5.在编译指令@property中指定属性(strong,nonatomic)告诉Xcode如何处理属性引用的。属性(attribute)strong 告诉系统,保留引用的对象,而不要将其从内存中删除。属性(nonatomic)告诉Xcode,不用担心应用程序的不同部分同时使用该属性的问题。

6.+类方法,-实例方法。

7.定义方法1:+(方法返回的类型)方法名:(方法期望的信息类型)引用该信息的变量名, 定义方法2:+(方法返回的类型)方法名:(方法期望的信息类型)引用该信息的变量名 添加简短的描述标签:数据类型:变量名

8.如果您不知道将给方法传递什么或希望能够从同一个方法返回不同类型的对象,id类型很有用

9.使用@property和@synthesize 结合可以使我们能够以直观的方式访问和修改实例变量

10.@implementation myclass 告诉Xcode该文件实现那个类

11.使用方法被称为给对象发送信息

12.有一些(循环引用)ARC 无法清理,A引用B B引用C C引用D D引用B 循环引用 ,A可以使用完对象B 但BCD存在循环引用,将无法释放这三个对象,避免这样的问题可以使用弱引用(Weak reference)

第四章:Cocoa Touch内幕

1.Apple每个iOS应用程序模板中都包括三个重要框架(CoreGraphics、Foundation、UIKit)

2.Cocoa Touch层:(1)UIKit:负责启动和结束应用程序、控制界面和多点触摸,并让您能够访问常见的数据视图(Word Excel)(2)Map Kit:让开发人员在任何应用程序中添加Goodle地图视图,包括标注、定位、事件处理功能(3)Game Kit:网络交互性(4)Message UI/Address Book UI/Event Kit UI:应用程序之间集成需求(5)iAd:使应用程序加入广告

3.多媒体层:(1)AV Foundation:用于播放和编辑复杂的音频和视频。如电影录制、音轨管理和音频平移(2)Core Audio:提供iPhone中播放和录制音频的方法(3)Core Image:开发人员在应用程序添加高级图像和视频处理功能(4)Core Graphics:添加2D回话和合成功能(5)对iPhone屏幕上显示的文本进行精确的定位和控制(6)Image I/O:导入与导出图像数据和图像元数据(7)Media Player:使用典型的屏幕空间轻松地播放电影(8)OpenGL ES:创建2D 3D动画(9)Quartz Core用于创建动画:利用设备的硬件功能

4.核心服务层:(1)Accounts:用于存储众多不同服务的账号信息(2)Address Book:用于直接访问和操作地址薄(3)CFNetwork:访问BSD套接字、HTTP和FTP协议请求以及Bonjour发现(4)Core Data:创建数据模型提供一个SQLite关系的数据库模型
(5)Core Foundation:与Foundation框架相同(6)Foundation:提供一个封装器(操作字符串 数组和字典都是通过Foundation框架进行的)(7)Event Kit:访问存储的日历信息(8)Core Location:用于iPhone iPad 3G GPS获取经纬度和测量精度
(9)Core Motion:管理大部分与运动相关的事件:使用加速剂和陀螺仪(10)Quick Look:实现文件浏览功能(11)Store Kit:创建购买实物(12)System Configuration:用于确定设备网络配置的当前状态

5.核心OS层:(1)Accelerate:简化计算和大数据操作任务,包括数字信号处理功能
(2)External Accessory:用于开发到配件的借口(3)Security:提供执行加密(添加 删除 修改密钥项)(4)System:访问不受限制的UNIX开发环境当中一些典型的工具

6.根类(NSObjct)应用程序类(UIApplication)窗口类(UIWindow)视图(UIView)响应者(UIResponder)屏幕控件(UIControl)视图控制图UIController

7.字符串NSString/NSMutableString其中NSMutableString可用与创建可被修改的字符串。NSString在初始化后就不可改变,NsMutableString可以修改(加长、缩短、替换等)

8.数组(NSArray/NSMutableArray)

9.字典(NSDictionary/NSMutableDictionary)字典以键值对形式存在

10.数字(NSNumber/NSDecimalNumber)可以将数字作为对象轻松加入数组或字典中,NSDecimalNumber是NSNumber的一个子类

11.日期(NSData)

12.网址(URL)

13界面类:标签(UILabel)按钮(UIButton)开关(UISwitch)分段控件(UISegmentedControl)滑块(UISlider)步进控件(UIStepper)文本框(UITextField/UITextView)选择器(UIDatePicker/UIPicker)弹出框(UIPopoverController)

第五章:Cocoa Touch内幕

1.实例化指的是创建对象的实例,让您能够在程序当中使用,获得其类当中的所有功能

2.IB(Interface Builder)故事板 打开storyboard显示该故事板的文件骨架

第六章:模型-视图-控制器的应用程序设计

1.视图控制器可包含应用程序逻辑,但这不以为着所有代码都包含视图控制器中。可以在核实的时候定义额外的类,已抽象应用程序逻辑

2.使用IBOutlet:用于让代码能够与视图中的对象交互(例如:@property(strong,nonatomic) UILbel *myLabel1与:@property(strong,nonatomic) IBOutlet UILbel *myLabel1配套使用)

3.对于接口文件.h中的每个编译指令@property实现文件.m中都必须有对应的编译智力高@synthesize

4.使用IBAction:用于指出在特定的事件发生时应调用代码中相应的方法。(例如用户点击了某个按钮或更新了文本框)采取相应的措施

5.AppDelegate.h 和AppDelegate.m组成了该项目将创建的UIAppkucation实例的委托,可对文件进行编辑,已添加控制应用程序运行时如何工作的方法。

6.ViewController.h ViewController.m实现一个视图控制器(UIViewControoler)这个类包含控制试图的逻辑。

7.确保使用完试图后,在代码中定义的实例变量不再指向对象。可以将实例变量对应的属性设置为nil这样这些文本框和标签占用的内存可被重用