objective-c入门
Posted ZhangShuo1999
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了objective-c入门相关的知识,希望对你有一定的参考价值。
一. objective-c简介
Objective-Objective-C是C语言的严格超集--任何C语言程序不经修改就可以直接通过Objective-C编译器,在Objective-C中使用C语言代码也是完全合法的。Objective-C被描述为盖在C语言上的薄薄一层,因为Objective-C的原意就是在C语言主体上加入面向对象的特性。
扩展名 | 内容类型 |
---|---|
.h | 头文件。头文件包含类,类型,函数和常数的声明。包含头文件时,#import 选项和 #include 选项完全相同,只是它可以确保相同的文件只会被包含一次。 |
.m | 源代码文件。这是典型的源代码文件扩展名,可以包含 Objective-C 和 C 代码。 |
.mm | 源代码文件。带有这种扩展名的源代码文件,除了可以包含Objective-C和C代码以外还可以包含C++代码。仅在你的Objective-C代码中确实需要使用C++类或者特性的时候才用这种扩展名。 |
二. 语法
1. 字符串
大多数Objective-C通常不使用C语言风格的字符串。反之,大多数框架把字符串传递给NSString对象。NSString类提供了字符串的类包装,包含了所有你期望的优点,包括对保存任意长度字符串的内建内存管理机制,支持Unicode,printf风格的格式化工具
//使用字面量创建字符串
NSString *string_0 = @"afeixiaohuozi";
//使用类方法创建字符串
NSString * string_1 = [NSString string];
string_1 = @"afeixiaohuozi";//字符串赋值
//创建一个字符串,并且将内容设置为string
NSString * string_2 = [NSString stringWithString:string_1];
//格式化创建字符串(按照格式输出)
NSString * string_3 = [NSString stringWithFormat:@"%@",string_1];
NSString * string_4 = [NSString stringWithFormat:@"hello %d %c",5,\'A\'];
//实例方法初始化
NSString *string_5 = [[NSString alloc] init];
//实例方法指定字符串
NSString *string_6 = [[NSString alloc] initWithString:string_3];
//实例方法创建字符串
NSString *string_7 = [[NSString alloc] initWithFormat:@"%@",string_4 ];
2. 类
Objective-C 的类规格说明包含了两个部分:定义(interface)与实现(implementation)。定义(interface)部分包含了类声明和实例变量的定义,以及类相关的方法。实现(implementation)部分包含了类方法的实际代码。
interface
定义部分,清楚定义了类的名称、数据成员和方法。 以关键字@interface作为开始,@end作为结束
@interface MyObject : NSObject { int memberVar1; // 实体变量 id memberVar2; } +(return_type) class_method; // 类方法 -(return_type) instance_method1; // 实例方法 -(return_type) instance_method2: (int) p1; -(return_type) instance_method3: (int) p1 andPar: (int) p2; @end //方法前面的 +/- 号代表函数的类型:加号(+)代表类方法(class method),不需要实例就可以调用,与C++ 的静态函数(static member function)相似。减号(-)即是一般的实例方法(instance method)。
//Objective-C定义一个新的方法时,名称内的冒号(:)代表参数传递,不同于C语言以数学函数的括号来传递参数。Objective-C方法使得参数可以夹杂于名称中间,不必全部附缀于方法名称的尾端,可以提高程序可读性。设定颜色RGB值的方法为例: - (void) setColorToRed: (float)red Green: (float)green Blue:(float)blue; /* 宣告方法*/ [myColor setColorToRed: 1.0 Green: 0.8 Blue: 0.2]; /* 呼叫方法*/ //这个方法的签名是setColorToRed:Green:Blue:。每个冒号后面都带着一个float类别的参数,分别代表红,绿,蓝三色。
Implementation
实现区块则包含了公开方法的实现,以及定义私有(private)变量及方法。 以关键字@implementation作为区块起头,@end结尾。
@implementation MyObject { int memberVar3; //私有實體變數 } +(return_type) class_method { ... //method implementation } -(return_type) instance_method1 { ... } -(return_type) instance_method2: (int) p1 { ... } -(return_type) instance_method3: (int) p1 andPar: (int) p2 { ... } @end
创建对象
Objective-C创建对象需通过alloc以及init两个消息。alloc的作用是分配内存,init则是初始化对象。
MyObject * my = [[MyObject alloc] init]; MyObject * my = [MyObject new];
3. 枚举
Foundation框架已经为我们提供了“统一、便捷”的枚举定义方法
typedef NS_ENUM(NSUInteger, TTGState) {//第一个参数是类型,第二个是类型别名 TTGStateOK = 0, TTGStateError, TTGStateUnknow }; typedef NS_OPTIONS(NSUInteger, TTGDirection) { TTGDirectionNone = 0, TTGDirectionTop = 1 << 0, TTGDirectionLeft = 1 << 1, TTGDirectionRight = 1 << 2, TTGDirectionBottom = 1 << 3 };
以上是关于objective-c入门的主要内容,如果未能解决你的问题,请参考以下文章
将 NSData Objective-C 代码转换为 Swift 时遇到问题