博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOS学习笔记 O1
阅读量:4509 次
发布时间:2019-06-08

本文共 5699 字,大约阅读时间需要 18 分钟。

  • 第一章 Objective-C语言基础

一、OC语言与C语言的比较

  • C语言是一门面向过程的语言,而OC则是一门面向对象的语言。
  • C语言文件默认保存格式为.c,OC语言默认保存格式为.m,两者头文件格式都为.h。
  • C语言和OC语言都需要main()作为程序开始的入口。
  • C语言有6个基本变量类型,OC多了布尔类型(BOOL,即YES/NO),ID(可以存储任何类型的对象,本质是一个指针),一些类型使用方式也发生了相应改变。
OC常见数据类型表(基于XCODE7编译器)
类型名 作用 备注
NSInteger 声明整型变量 在Xcode3中,直接将整型定义为long型
NSFloat 声明浮点型变量 在Xcode3中,直接将整型定义为double型
NSString 声明常量字符串 在Xcode3中,由NSString定义的字符串存放在类中,注意前边须加@符
NSArray 声明数组形变量 在Xcode3中,用NSArray来声明数组,用法在以后的笔记中详细介绍
char 声明字符型变量 同C语言
ID 声明通用指针类型 指向任何一个继承了Object(或者NSObject)类的对象
struct 声明结构体变量 同C语言
union 声明共同体(联合)数据类型 后续讨论
void 声明函数无返回值或无参 同C语言
enum 声明枚举类型 后续讨论
signed 声明有符号类型变量 同C语言
unsigned 声明无符号类型变量 同C语言
BOOL/bool 声明布尔类型变量 YES/NO

 

 

二、OC语言基础入门

<1>  使用Xcode工具开发OC程序

  • 新建一个Xcode工程

         1、启动Xcode,单击“Create a New Xcode Project”,或者单击屏幕顶端的“File”->“New”->“Project”,或者使用“command+shift+N”,打开新建项目对话框:

          2、单击左侧对话框中OS X下的“Application”,再单击右侧对话框中的“Command Line Tool”,最后单击“Next”进入下一步。

          3、填写“Product Name”(项目名)和“Organization Identifier”(组织标识),“Language”(语言)根据需要选择该项目的开发语言,这里选择“Objective-C”,单击“Next”。

        4、选择文件保存路径,然后单击“Create”,然后你就得到了一个Xcode工程。

  • 新建一个Cocoa Clas

        1、按照上述步骤,新建一个名为笔记的工程如图所示,在左侧对话框中的“笔记”文件夹上单击右键,在弹出的菜单栏中选择“New File”。

        2、左侧对话框中找到OS X,单击“Source”,在右侧对话框中选择“Cocoa Class”,单击“Next”。

        3、填写“Class”(类名,下边有类的详细说明),“Subclass of”(子类从属于,即该类的父类),“Language”(语言)选择“Objective-C”,单击“Next”。

        4、选择文件保存路径,不再赘述。完成以后我们便有了一个Cocoa Class文件。

<2>  编写OC文件的要求

  • 预编译命令的书写要求
  1. #import用于引入头文件,可以自动过滤相同的引用。
  2. #import作用相当于Copy,如果两个.h文件相互引用,则Xcode会报错!这是因为在编译过程中,会首先将两个.h中的内容copy到一起,然后继续copy,copy。。
  3. 解决循环引用,请使用@class命令!
  4. #define#typedef用法与C语言没有差别,但都必须要写在#import后边。
  • 基本命令的一些要求
  1. 关键字大都以@开头,字符串也要以@开头。
  2. 在OC中,打印一般使用NSLog指令,NS是NextStep的缩写。

              >>NSLog指令会自动加上时间和进程信息,并在输出结果时自动换行,输出方法与C语言一致。

              >>格式控制符与C语言无差别,增加了%@用于字符串的输出。

  • 下面看一个简单的OC语言程序

 

1     #import 
//定义main方法,作为程序入口 2 /*关于main方法括号里的参量请参考 http://www.cnblogs.com/avril/archive/2010/03/22/1691477.html */ 3 int main(int argc,char *argv[]) 4 { 5 @autoreleasepool //自动释放池 6 { 7 NSLog(@"Hello World!"); //输出“Hello World!” 8 } 9 return 0; //返回值10 }

 

  1. 在这段代码中,引入了“Foundation”框架下“Foundation.h”的头文件,这样就可以使用“Foundation/Foundation.h”中提供的NSLog()输出函数。
  2. 然后在main方法中先编写@autoreleasepool{}——自动释放池,在自动释放池中的语句,系统会自动回收这些语句所创建的对象。目的是用来保证OC能够自动释放内存,避免引起内存泄漏。
  3. 程序向NSLog()传入的参数是@"Hello World!",这是OC语言中的字符串(NSString对象),OC要求在字符串前面加@,用于与C语言字符串进行区别。

      程序运行的结果下图所示:

 

<3>  类(class)和对象(object,也称为实例,instance)

  • 类和对象的区别

        >>类是一个抽象的概念,而对象则是具体的概念。

             比如说水果,它只是代表水果这个类别,其中可能包含很多对象(如苹果和桃子),并不能代表类中对象的具体信息,而对象可以是具体的苹果和桃子,并且可以用对象的属性(如颜色、味道等)来表示对象的具体信息。

  • 类的使用方法

      1、类包括接口部分和实现部分。

      2、接口部分

         >>接口部分用于定义该类包含的成员变量和方法

         >>接口部分以@interface编译指令开始,以@end结束,该接口需要的定义的对象属性和方法都要写在@interface和@end之间

         >>接口部分需要对每一个声明的对象属性定义setget方法,需要对定义的其他方法进行声明,要求每种方法前须加注释

         >>接口部分要求必须使用驼峰式命名规则,即每个变量名或方法名首字母小写,之后每个单词的首字母大写,命名必须言简意赅,不能使用汉语拼音

         >>接口部分的声明格式如下代码

1 #import 
2 3 @interface User : NSObject 4 { 5 NSString * _name; //定义字符串变量 6 NSString * _sex; 7 NSInteger _age; //定义整型变量 8 } 9 /*********setget方法*********/10 /**定义set用户昵称的方法*/11 - (void) setName:(NSString *) name;12 /**定义get用户昵称的方法*/13 - (NSString *)name; 14 /**定义set性别的方法*/15 - (void) setSex:(NSString *) sex; 16 /**定义get性别的方法*/ 17 - (NSString *)sex; 18 /**定义set年龄的方法*/ 19 - (void) setAge:(NSInteger) age; 20 /**定义get年龄的方法*/ 21 - (NSInteger)age;22 //************************************SET方法合并书写****************************************** 23 - (void) setName:(NSString *) name andSex :(NSString *) sex andAge :(NSInteger) age; //注:该方法只能用于书写set方法,get依然还要继续写,这种写法不能使用点语法赋值! 2425 /*********其他方法*********/26 /**定义对象方法*/27 - (void) createMyClass;28 29 @end30 31 //至此我们就完成了Users这个类接口部分的编写

 

 

        3、实现部分

          >>实现部分用于为该类的方法提供实现

          >>实现部分以@implementation编译指令开始,以@end结束,该实现需要对象的方法都要写在@implementation和@end之间

          >>实现部分需要对每一个声明的对象属性定义setget方法,需要对定义的其他方法进行声明,要求每种方法前须加注释

          >>实现部分要求必须使用驼峰式命名规则,即每个变量名或方法名首字母小写,之后每个单词的首字母大写,命名必须言简意赅,不能使用汉语拼音

          >>实现部分的声明格式如下代码

 

1 #import 
2 #import "User.h" 3 4 @implementation User 5 /**set用户昵称的方法*/ 6 - (void) setName:(NSString *) name{ 7 _name=name; 8 } 9 /**get用户昵称的方法*/10 - (NSString *)name{11 return _name;12 }13 /**set性别的方法*/14 - (void) setSex:(NSString *) sex{15 _sex=sex;16 }17 /**get性别的方法*/18 - (NSString *)sex{19 return _sex;20 }21 /**set年龄的方法*/22 - (void) setAge:(NSInteger) age{  23 _age=age;24 }25 /**get年龄的方法*/26 - (NSInteger)age{27 return _age;28 } 29 //************************************SET方法合并实现****************************************** 30 - (void) setName:(NSString *) name andSex :(NSString *) sex andAge :(NSInteger) age{ 31 _name=name; 32 _sex=sex 33 _age=age 34 }35 /**声明对象方法*/36 - (void) createMyClass{37 NSLog(@"声明一个名为User的类");38 }39 40 @end41 42 //至此我们就完成了Users这个类实现部分的编写

 

 

三、对象的产生和使用

  • 对象的产生和使用

      1、调用类产生对象前,需使用#import命令引入写好的类文件(如上边写好的User.h)

      2、定义变量的语法格式为 Class * variableName;

      3、创建对象的语法格式为 [[Class alloc]initMethod];

      4、变量赋值请使用点语法 variableName. attribute=variable;

      5、方法调用的语法格式为 [Object methodName:parameter/(dataType) formalParameter];

  • 一个简单的对象产生和使用程序
1 #import 
2 #import "User.h" 3 4 //定义main方法,作为程序入口 5 int main(int argc,char *argv[]) 6 { 7 @autoreleasepool //自动释放池 8 { 9 User * user1=[[User alloc]init]; //声明对象并开辟对象的内存空间10 [user1 setName:@"Jereh"]; //调用set方法给字符串型变量name赋值11 [user1 setSex:@"Male"]; //调用set方法给字符串型变量sex赋值12 [user1 setAge:18]; //调用set方法给整型变量sex赋值13 [user1 createMyClass]; //调用createMyClass方法,打印“声明一个名为User的类”14 NSLog(@"\n姓名:%@\n性别:%@\n年龄:%ld\n",[user1 name],[user1 sex],[user1 age]); //打印用户信息,User1后边的name,sex,age均使用了get方法来获取对象的属性15 }16 return 0; //返回值17 }
  •  程序运行结果:

 

这一次的笔记到此结束,疏漏之处在所难免,烦请不吝赐教指点一二,谢谢各位看官!

 

转载于:https://www.cnblogs.com/Keyo54321/p/5415683.html

你可能感兴趣的文章
微信小程序——获取步数
查看>>
代理原有的Handler.Callback,感知Application onCreate的结束时间
查看>>
Delphi 皮肤控件AlphaControls的使用
查看>>
pycharm快捷键大全
查看>>
Smarty 简单使用
查看>>
冒泡排序
查看>>
30分钟泛型教程
查看>>
信息与信息工具的意义
查看>>
Http 状态码:
查看>>
js 对象操作赋值操作
查看>>
关于IE6的一些需求分析
查看>>
【IPv6】ISATAP隧道技术详解
查看>>
numpy_pandas
查看>>
oracle数据导入/导出(2)
查看>>
SSH远程会话管理工具 - screen使用教程
查看>>
设计模式
查看>>
前端复习-01-dom操作包括ie和现代浏览器处理相关
查看>>
[CF612D] The Union of k-Segments(排序,扫描线)
查看>>
linux安装nginx
查看>>
spark书籍视频推荐
查看>>