【IOS 开发】Object - C 入门 之 数据类型具体解释

作者 : 韩曙亮

转载请注明出处http://blog.csdn.net/shulianghan/article/details/38544659

1. 数据类型简单介绍及输出

(1) 数据类型简单介绍

数据类型简单介绍 : Object - C 数据类型 分为 基本数据类型, 构造类型 和 指针类型;

-- 基本数据类型 : 整型, 字符型, 浮点型 (float 和 double), 枚举型;

-- 构造类型 : 数组类型, 结构体类型, 共用体类型;

-- 指针类型 : 终于要的数据类型, 全部的系统类, 自己定义类都是指针;

-- 空类型 : 空类型仅仅有一个值 nil, 该类型没有名称, 因此没有空类型的变量, 变量不能转换成空类型, 可是空类型能够转换成不论什么引用类型;

(2) 数据类型输出

NSLog()简单介绍 : NSLog 是 Foundation 框架中功能强大的函数, 能够输出不论什么类型的数据;

-- 占位符 : NSLog() 函数中各式与 C 语言中大致类似, 第一个參数是加了 @ 的字符串, 后面的參数是用于替换占位符的;

整型占位符说明 :

-- %d : 十进制整数, 正数无符号, 负数有 "-" 符号;

-- %o : 八进制无符号整数, 没有 0 前缀;

-- %x : 十六进制无符号整数, 没有 0x 前缀;

-- %u : 十进制无符号整数;

字符占位符说明 :

-- %c : 单个字符输出;

-- %s : 输出字符串;

浮点占位符说明 :

-- %f : 以小数形式输出浮点数, 默认 6 位小数;

-- %e : 以指数形式输出浮点数, 默认 6 位小数;

-- %g : 自己主动选择 %e 或者 %f 各式;

其他形式占位符 :

-- %p : 输出十六进制形式的指针地址;

-- %@ : 输出 Object-C 对象;

占位符附加字符 :

-- l : 在整型 和 浮点型占位符之前, %d %o %x %u %f %e %g 代表长整型 和 长字符串;

-- n(随意整数) : %8d 代表输出8位数字, 输出总位数;

-- .n : 浮点数 限制小数位数, %5.2f 表示 5位数字 2位小数, 字符串 截取字符个数;

-- - : 字符左对齐;

演示样例代码 :

#import <Foundation/Foundation.h>

int main(int argc, char **argv)
{
	@autoreleasepool{
		int a = 38;
		long b = 38;
		double c = 3.8;
		double d = 2.3;
		char * oct_c = "Octopus";
		NSString *oct_oc = @"Octopus"; /* 定义字符串, 在字符串前加上 @ 说明是Ovject-C变量, 值赋给一个 NSString 指针 */
		NSDate *date = [[NSDate alloc]init];

		NSLog(@"%d 十进制整型", a);
		NSLog(@"%5d 五位十进制整型", a);
		NSLog(@"%-5d 左对齐的五位十进制整型", a);
		NSLog(@"%o 八进制整型", a);
		NSLog(@"%x 十六进制整型\n", a);

		NSLog(@"%ld 长整型", b);
		NSLog(@"%lx 十六进制长整型\n", b);

		NSLog(@"%f 小数形式输出浮点数", c);
		NSLog(@"%e 指数形式输出浮点数", c);
		NSLog(@"%g 以最简短形式输出浮点数", c);
		NSLog(@"%5f 以五位小数形式输出浮点数", c);
		NSLog(@"%5.3f 小数行书输出, 一共五位, 小数3位\n", c);

		NSLog(@"%lf 小数形式输出长浮点数", d);
		NSLog(@"%le 指数形式输出长浮点数", d);
		NSLog(@"%lg 以最短形式输出长浮点数", d);
		NSLog(@"%5lf 5位小数形式输出长浮点数", d);
		NSLog(@"%5.3lf 5位小数形式输出长浮点数, 当中3位是小数\n", d);

		NSLog(@"%s 输出C字符串", oct_c);
		NSLog(@"%@ 输出Object-C字符串\n", oct_oc);

		NSLog(@"%@ 输出日期", date);

	}
}

运行结果 :

octopus-2:ios octopus$ clang -fobjc-arc -framework Foundation 02-NSLogDemo.m
octopus-2:ios octopus$
octopus-2:ios octopus$ ./a.out
2014-08-16 19:32:44.210 a.out[1300:507] 38 十进制整型
2014-08-16 19:32:44.212 a.out[1300:507]    38 五位十进制整型
2014-08-16 19:32:44.213 a.out[1300:507] 38    左对齐的五位十进制整型
2014-08-16 19:32:44.214 a.out[1300:507] 46 八进制整型
2014-08-16 19:32:44.214 a.out[1300:507] 26 十六进制整型
2014-08-16 19:32:44.215 a.out[1300:507] 38 长整型
2014-08-16 19:32:44.215 a.out[1300:507] 26 十六进制长整型
2014-08-16 19:32:44.216 a.out[1300:507] 3.800000 小数形式输出浮点数
2014-08-16 19:32:44.216 a.out[1300:507] 3.800000e+00 指数形式输出浮点数
2014-08-16 19:32:44.217 a.out[1300:507] 3.8 以最简短形式输出浮点数
2014-08-16 19:32:44.217 a.out[1300:507] 3.800000 以五位小数形式输出浮点数
2014-08-16 19:32:44.218 a.out[1300:507] 3.800 小数行书输出, 一共五位, 小数3位
2014-08-16 19:32:44.218 a.out[1300:507] 2.300000 小数形式输出长浮点数
2014-08-16 19:32:44.219 a.out[1300:507] 2.300000e+00 指数形式输出长浮点数
2014-08-16 19:32:44.219 a.out[1300:507] 2.3 以最短形式输出长浮点数
2014-08-16 19:32:44.219 a.out[1300:507] 2.300000 5位小数形式输出长浮点数
2014-08-16 19:32:44.220 a.out[1300:507] 2.300 5位小数形式输出长浮点数, 当中3位是小数
2014-08-16 19:32:44.220 a.out[1300:507] Octopus 输出C字符串
2014-08-16 19:32:44.220 a.out[1300:507] Octopus 输出Object-C字符串
2014-08-16 19:32:44.226 a.out[1300:507] 2014-08-16 11:32:44 +0000 输出日期

2. 整型

(1) 整型类型介绍

四种整型 :

-- short int : 短整型, 占16位, mac 上占 2 字节, ios 上占 2 字节, 范围 -32768(-2^15) ~ 32767(2^15 - 1), 3万;

-- int : 整型, 占32位, mac 上占 4 字节, ios 上占 4 字节, 范围 -2147483648(-2^31) ~ 2147483647(2^31 - 1), 21亿;

-- long int : 长整型, 占64位, mac 上占 8 字节, ios 上占 4 字节, (-2^63) ~ (2^63 - 1), 922亿亿;

-- long long : 占64位, mac 上占 8 字节, ios 上占 8 字节;

整数赋值 : 整型赋值时注意范围, 假设超出赋值范围, 会出现警告, 数据也会丢失;

-- 演示样例程序 :

/*************************************************************************
    > File Name: a.m
    > Author: octopus
    > Mail: octopus_truth.163.com
    > Created Time: 日  8/17 00:44:19 2014
 ************************************************************************/

#import <Foundation/Foundation.h>

int main(int argc, char * argv[])
{
	@autoreleasepool {
		short int a = 50000; /* short int 范围是 正负3万, 因此超出范围报错 */
		int a = 50000;

		NSLog(@"short int a = %d", a);
		NSLog(@"int a = %d", a);
	}
}

-- 运行结果 :

octopus-2:~ octopus$ clang -fobjc-arc -framework Foundation a.m
a.m:14:7: error: redefinition of ‘a‘ with a different type: ‘int‘ vs ‘short‘
                int a = 50000;
                    ^
a.m:13:13: note: previous definition is here
                short int a = 50000;
                          ^
1 error generated.

(2) 进制介绍

八进制 十六进制赋值 : 八进制由 "0" 开头, 十六进制由 "0x" 或者 "0X" 开头;

-- 演示样例程序 :

#import <Foundation/Foundation.h>

int main(int argc, char **argv)
{
	@autoreleasepool
	{
		int a = 010;	/* 八进制赋值 */
		int b = 0x10;	/* 十六进制赋值 */
		int c = 10;		/* 正常十进制赋值 */

		NSLog(@"a = %d", a);
		NSLog(@"b = %d", b);
		NSLog(@"c = %d", c);

		NSLog(@". . . . . ");

		NSLog(@"a = %o", a);
		NSLog(@"b = %x", b);
	}
	return 0;
}

-- 运行结果 :

octopus-2:ios octopus$ clang -fobjc-arc -framework Foundation 03-IntDemo1.m
octopus-2:ios octopus$ ./a.out
2014-08-17 00:58:50.513 a.out[1726:507] a = 8
2014-08-17 00:58:50.516 a.out[1726:507] b = 16
2014-08-17 00:58:50.516 a.out[1726:507] c = 10
2014-08-17 00:58:50.516 a.out[1726:507] . . . . .
2014-08-17 00:58:50.517 a.out[1726:507] a = 10
2014-08-17 00:58:50.517 a.out[1726:507] b = 10

(3) 无符号整型

无符号整型 : 无符号整型 第一位 不是符号位, 范围比原来要大, 比如 short int 范围是 正负3万, unsigned short int 范围是 0到6万, 将5万赋值给 该类型不报错;

-- 演示样例程序 :

/*************************************************************************
    > File Name: 03-IntDemo2.m
    > Author: octopus
    > Mail: octopus_truth.163.com
    > Created Time: 日  8/17 01:02:39 2014
 ************************************************************************/

#import <Foundation/Foundation.h>

int main(int argc, char * argv[])
{
	@autoreleasepool {
		unsigned short int a = 50000;

		NSLog(@"a = %d", a);
	}
}

-- 运行结果 :

octopus-2:ios octopus$ clang -fobjc-arc -framework Foundation 03-IntDemo2.m
octopus-2:ios octopus$ ./a.out
2014-08-17 01:03:35.508 a.out[1745:507] a = 50000

3. 字符型

字符型数据简单介绍 :

-- 单个字符表示 : 使用 ‘‘ 将单个字符引起来, 便是字符常量, 如 ‘a‘, ‘b‘ 等;

-- 转义字符表示 : 使用转义符号 \ 来指定字符, 如 ‘\n‘ 等;

-- 字符占用空间大小 : 每一个字符占用一个字节, 因此 Object-C 不支持中文字符, 由于中文字符都是占 2 ~ 3 个字节;

转义字符 : 分为特殊空白字符 和 差别 单双引號 和 反斜线的转义;

-- 退格符 : ‘\b‘ ;

-- 换行符 : ‘\n‘ ;

-- 回车符 : ‘\r‘ ;

-- 制表符 : ‘\t‘ ;

-- 双引號 : ‘\"‘ ;

-- 单引號 : ‘\‘‘ ;

-- 反斜线 : ‘\\‘ ;

int 与 char 类型关系 : char 类型能够当做 8 位无符号整数, 取值范围 0 ~ 255;

-- int 赋值给 char : 将 int 类型赋值给 char 变量的时候, 会自己主动将类型转为 char 类型;

char 类型 演示样例 :

/*************************************************************************
    > File Name: 05-charDemo.m
    > Author: octopus
    > Mail: octopus_truth.163.com
    > Created Time: 二  8/19 21:10:37 2014
 ************************************************************************/

#import <Foundation/Foundation.h>

int main(int argc, char * argv[])
{
	@autoreleasepool {
		char a = ‘a‘;
		char b = 100;
		char c = ‘\n‘;

		NSLog(@"a = %d", a);
		NSLog(@"b = %c", b);
		NSLog(@"c = %d", c);
	}
}

运行结果 :

octopus-2:ios octopus$ clang -fobjc-arc -framework Foundation 05-charDemo.m
octopus-2:ios octopus$ ./a.out
2014-08-19 21:13:24.815 a.out[441:507] a = 97
2014-08-19 21:13:24.816 a.out[441:507] b = d
2014-08-19 21:13:24.817 a.out[441:507] c = 10

4. 浮点型

浮点型数据类型 :

-- float : 占 4 字节;

-- double : 占 8 字节;

-- long double : 占 16 字节;

浮点数表示形式 :

-- 十进制形式 : 简单的浮点数, 包括一个小数点, 如 3.8, 38.0, .38 等;

-- 科学计数法 : 3.8E2 或者 3.8e2 代表 3.8*10^2, 仅仅有浮点数才干使用科学计数法;

Object-C 与 Java 浮点数差别 :

-- Java 浮点数 : Java 的 double 与 float 不同, 浮点数赋值给 float 须要加上 f 后缀;

-- Object-C浮点数 : 不区分 double 与 float, 一个浮点数 3.8 能够赋值给两种类型的变量;

浮点数的特殊值 :

-- 正无穷大 : 正浮点数除以 0.0 得到正无穷大, 正无穷大都相等, 正整数除以 0.0 得到整数的边界值, short int 除以 0.0 得到 32767(2^15 -1);

-- 负无穷大 : 负浮点数除以 0.0 得到负无穷大, 负无穷大都相等, 负整数除以 0.0 得到整数的边界值, short int 除以 0.0 得到 -32768(2^15);

-- 非数 : 0.0 除以 0.0 得到一个非数, 非数与不论什么数包括其本身都不相等;

代码演示样例 :

/*************************************************************************
    > File Name: 06-floatDemo.m
    > Author: octopus
    > Mail: octopus_truth.163.com
    > Created Time: 三  8/20 01:08:35 2014
 ************************************************************************/

#import <Foundation/Foundation.h>

int main(int argc, char * argv[])
{
	@autoreleasepool {
		/* 定义的10位的小数, 使用10位 %g 格式输出, 结果 float 仅仅能接收6位小数 */
		float a = 3.888888888;
		NSLog(@"a = %10g", a);

		/* double 类型也仅仅能接收6位有效值 */
		double b = 388.8888888;
		NSLog(@"b = %10g", b);

		NSLog(@"5.0 / 0.0 = %g", 5.0 / 0.0);
		NSLog(@"正无穷大对照结果 = %d", 5.0/0.0 == 500/0.0);

		double feiNum = 0.0 / 0.0;
		NSLog(@"0.0 / 0.0 = %g", feiNum);
		NSLog(@"非数对照结果 = %d", feiNum == feiNum);

		/* 获取边界 */
		int bound1 = 5/0.0;
		int bound2 = -5/0.0;
		NSLog(@"正边界 = %d, 负边界 = %d", bound1, bound2);

	}
}

-- 运行效果 :

octopus-2:ios octopus$ clang -fobjc-arc -framework Foundation 06-floatDemo.m
octopus-2:ios octopus$ ./a.out
2014-08-20 01:22:22.712 a.out[776:507] a =    3.88889
2014-08-20 01:22:22.714 a.out[776:507] b =    388.889
2014-08-20 01:22:22.714 a.out[776:507] 5.0 / 0.0 = inf
2014-08-20 01:22:22.714 a.out[776:507] 正无穷大对照结果 = 1
2014-08-20 01:22:22.715 a.out[776:507] 0.0 / 0.0 = nan
2014-08-20 01:22:22.715 a.out[776:507] 非数对照结果 = 0
2014-08-20 01:22:22.715 a.out[776:507] 正边界 = 2147483647, 负边界 = -2147483648

-- 注意情况 : 不能将 5/0.0 直接以 %d 形式打印, 否则会报下面错误;

octopus-2:ios octopus$ clang -fobjc-arc -framework Foundation 06-floatDemo.m
06-floatDemo.m:29:44: warning: format specifies type ‘int‘ but the argument has type ‘double‘ [-Wformat]
                NSLog(@"正边界 = %d, 负边界 = %d", 5/0.0, -5/0.0);
                                 ~~                ^~~~~
                                 %f
06-floatDemo.m:29:51: warning: format specifies type ‘int‘ but the argument has type ‘double‘ [-Wformat]
                NSLog(@"正边界 = %d, 负边界 = %d", 5/0.0, -5/0.0);
                                              ~~          ^~~~~~
                                              %f
2 warnings generated.

5. 枚举类型

(1) 定义普通枚举

定义方式 : 格式 enum enum_name {elem1, elem2, elem3 ...};

-- 演示样例 : enum day{Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday};

定义枚举变量 : 格式 enum enum_name var1, var2;

-- 演示样例 : enum day today, tomorrow, 注意 today tomorrow 两个变量的取值仅仅能是 day 枚举中定义的值;

枚举变量赋值 : 格式 variable = elm1 ;

-- 演示样例 : today = Sunday; tomorrow = Friday;

(2) 定义匿名枚举

匿名枚举格式 : enum {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday} today, tomorrow ;

-- 说明 : 两个枚举变量 today 和 tomorrow 仅仅能取值 enum 中得枚举值;

(3) 枚举值简单介绍

枚举值常量 : 在 {} 中得是枚举常量 或者 枚举元素, 该元素不是变量, 不能对齐进行赋值, 枚举的值依照定义的顺序 0, 1, 2, 3 以此类推;

枚举值本质 : 枚举值属于无符号整数, 能够使用 %u 占位符打印出来, 其值也能进行大小比較, 和四则运算;

枚举初值 : 枚举值能够在定义的时候赋予一个初值;

(4) 枚举演示样例

演示样例程序 :

/*************************************************************************
    > File Name: 07-enumDemo.m
    > Author: octopus
    > Mail: octopus_truth.163.com
    > Created Time: 四  8/21 21:36:09 2014
 ************************************************************************/

#import <Foundation/Foundation.h>

int main(int argc, char * argv[])
{
	@autoreleasepool {
		/* 定义一个枚举 */
		enum day {Sunday = 6, Monday = 2, Tuesday, Wednesday, Thursday, Friday, Saturday};

		/* 定义枚举变量 */
		enum day today, tomorrow;

		/* 为枚举变量赋值 */
		today = Wednesday;
		tomorrow = Thursday;

		/* 打印枚举值 */
		NSLog(@"today = %u", today);
		NSLog(@"tomorrow = %u", tomorrow);

		enum {alive, die} state;
		state = alive;

		NSLog(@"state = %d",  state);

	}
}

运行结果 :

octopus-2:ios octopus$ clang -fobjc-arc -framework Foundation 07-enumDemo.m
octopus-2:ios octopus$ ./a.out
2014-08-21 21:49:01.414 a.out[664:507] today = 4
2014-08-21 21:49:01.416 a.out[664:507] tomorrow = 5
2014-08-21 21:49:01.416 a.out[664:507] state = 0

6. 布尔型数据

BOOL 类型简单介绍 :

-- BOOL 类型值 : 该类型至右两个值 YES 和 NO ;

-- BOOL 类型本质 : 该类型本质是 signed char, YES 是 1, NO 是 0, 在处理的时候 YES 会被当成真处理, NO 会被当成假处理;

定义 BOOL 类型的系统源代码 :

#define OBJC_BOOL_DEFINED

/// Type to represent a boolean value.
typedef signed char BOOL;
// BOOL is explicitly signed so @encode(BOOL) == "c" rather than "C"
// even if -funsigned-char is used.

#if __has_feature(objc_bool)
#define YES             __objc_yes
#define NO              __objc_no
#else
#define YES             ((BOOL)1)
#define NO              ((BOOL)0)
#endif

代码演示样例 :

/*************************************************************************
    > File Name: 08-boolDemo.m
    > Author: octopus
    > Mail: octopus_truth.163.com
    > Created Time: 二  8/26 00:29:58 2014
 ************************************************************************/

#import <Foundation/Foundation.h>

/* 推断 a 是否大于 b */
BOOL isBig(int a, int b)
{
	if(a > b)
	{
		return YES;
	}
	return NO;
}
int main(int argc, char * argv[])
{
	@autoreleasepool {
		int a = 5;
		int b = 3;

		NSLog(@"a 是否大于 b : %d", isBig(a, b));

		BOOL c = 1;
		BOOL d = 2;

		NSLog(@"c = %d", c);
		NSLog(@"d = %d", d);
	}
}

运行结果 :

octopus-2:ios octopus$ clang -fobjc-arc -framework Foundation 08-boolDemo.m
octopus-2:ios octopus$ ./a.out
2014-08-26 00:40:48.928 a.out[1758:507] a 是否大于 b : 1
2014-08-26 00:40:48.930 a.out[1758:507] c = 1
2014-08-26 00:40:48.931 a.out[1758:507] d = 2

BOOL 类型赋值 :

-- BOOL 类型推断 : BOOL 类型会将非 0 数字当做 YES 处理;

-- 大数字赋值 : 注意 BOOL 类型仅仅有 8 位, 赋值的时候, 仅仅要最后8位不为0, 那么 BOOL 类型就是 YES, 假设后 8 位为0, 那么 BOOL 为 NO;

-- 演示样例代码 :

/*************************************************************************
    > File Name: 08-boolDemo1.m
    > Author: octopus
    > Mail: octopus_truth.163.com
    > Created Time: 二  8/26 00:48:05 2014
 ************************************************************************/

#import <Foundation/Foundation.h>

int main(int argc, char * argv[])
{
	@autoreleasepool {
		BOOL a = 256;
		BOOL b = 512;

		NSLog(@"a = %d", a);
		NSLog(@"b = %d", b);
	}
}

-- 编译警告 :

octopus-2:ios octopus$ clang -fobjc-arc -framework Foundation 08-boolDemo1.m
08-boolDemo1.m:13:12: warning: implicit conversion from ‘int‘ to ‘BOOL‘ (aka ‘signed char‘) changes value from 256 to 0
      [-Wconstant-conversion]
                BOOL a = 256;
                     ~   ^~~
08-boolDemo1.m:14:12: warning: implicit conversion from ‘int‘ to ‘BOOL‘ (aka ‘signed char‘) changes value from 512 to 0
      [-Wconstant-conversion]
                BOOL b = 512;
                     ~   ^~~
2 warnings generated.

-- 运行结果 :

octopus-2:ios octopus$ ./a.out
2014-08-26 00:50:00.705 a.out[1802:507] a = 0
2014-08-26 00:50:00.708 a.out[1802:507] b = 0

作者 : 韩曙亮

转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/38544659

时间: 2024-12-12 04:17:17

【IOS 开发】Object - C 入门 之 数据类型具体解释的相关文章

IOS开发语言Swift入门连载---类型转换

IOS开发语言Swift入门连载-类型转换 类型转换可以判断实例的类型,也可以将实例看做是其父类或者子类的实例. 类型转换在 Swift 中使用is 和 as 操作符实现.这两个操作符提供了一种简单达意的方式去检查值的类型或者转换它的类型. 你也可以用来检查一个类是否实现了某个协议,就像在 Checking for Protocol Conformance部分讲述的一样. 定义一个类层次作为例子 你可以将它用在类和子类的层次结构上,检查特定类实例的类型并且转换这个类实例的类型成为这个层次结构中的

iOS开发60分钟入门

iOS开发60分钟入门 原文:https://github.com/qinjx/30min_guides/blob/master/ios.md 本文面向已有其它语言(如Java,C,PHP,Javascript)编程经验的iOS开发初学者,初衷在于了解如何开始开发iOS App,学习目标包括: 能使用Xcode IDE.模拟器 能修改.调试已有iOS App 能在已有应用内创建新模块 能创建新应用 能发布应用到App Store 本文不包含任何高级的iOS开发知识,已学会iOS开发的同学不要看,

IOS开发语言Swift入门连载---类和结构体

IOS开发语言Swift入门连载-类和结构体 类和结构体是人们构建代码所用的一种通用且灵活的构造体.为了在类和结构体中实现各种功能,我们必须要严格按照常量.变量以及函数所规定的语法规则来定义属性和添加方法. 与其他编程语言所不同的是,Swift 并不要求你为自定义类和结构去创建独立的接口和实现文件.你所要做的是在一个单一文件中定义一个类或者结构体,系统将会自动生成面向其它代码的外部接口. 注意: 通常一个类 的实例被称为对象 .然而在Swift 中,类和结构体的关系要比在其他语言中更加的密切,本

IOS开发语言Swift入门连载---枚举

IOS开发语言Swift入门连载-枚举 枚举定义了一个通用类型的一组相关的值,使你可以在你的代码中以一个安全的方式来使用这些值. 如果你熟悉 C 语言,你就会知道,在 C 语言中枚举指定相关名称为一组整型值.Swift 中的枚举更加灵活,不必给每一个枚举成员提供一个值.如果一个值(被认为是"原始"值)被提供给每个枚举成员,则该值可以是一个字符串,一个字符,或是一个整型值或浮点值. 此外,枚举成员可以指定任何类型的相关值存储到枚举成员值中,就像其他语言中的联合体(unions)和变体(v

IOS开发语言Swift入门连载---协议

IOS开发语言Swift入门连载-协议 协议(Protocol) 协议(Protocol)用于定义完成某项任务或功能所必须的方法和属性,协议实际上并不提供这些功能或任务的具体实现(Implementation) –而只用来描述这些实现应该是什么样的.类,结构体,枚举通过提供协议所要求的方法,属性的具体实现来采用(adopt) 协议.任意能够满足协议要求的类型被称为协议的遵循者. 协议可以要求其遵循者提供特定的实例属性,实例方法,类方法,操作符或下标脚本等. 协议的语法 协议 的定义方式与类,结构

IOS开发语言Swift入门连载---集合类型

IOS开发语言Swift入门连载-集合类型 Swift语言提供经典的数组和字典两种集合类型来存储集合数据.数组用来按顺序存储相同类型的数据.字典虽然无序存储相同类型数据值但是需要由独有的标识符引用和寻址(就是键值对). Swift语言里的数组和字典中存储的数据值类型必须明确. 这意味着我们不能把不正确的数据类型插入其中. 同时这也说明我们完全可以对获取出的值类型非常自信. Swift 对显式类型集合的使用确保了我们的代码对工作所需要的类型非常清楚,也让我们在开发中可以早早地找到任何的类型不匹配错

iOS开发-UI 从入门到精通(二)

iOS开发-UI 从入门到精通(二)是对 iOS开发-UI 从入门到精通(一)知识点的巩固,主要以习题练习为主,增强实战经验,为以后做开发打下坚实的基础! ※开发环境和注意事项: 1.前期iOS-UI开发我们需要手动管理内存,所以我们要把ARC关掉(Xcode关掉ARC的步骤): (1)打开Xcode选中当前工程: (2)选中Build Settings: (3)在输入框内输入count: (4)选择Objective-C Automatic Reference Counting  将其设置为 

IOS开发语言Swift入门连载---可选链

IOS开发语言Swift入门连载-可选链 可选链(Optional Chaining) 是一种可以请求和调用属性.方法及下标脚本的过程,它的可选性体现于请求或调用的目标当前可能为空(nil ).如果可选的目标有值,那么调用就会成功:相反,如果选择的目标为空(nil ),则这种调用将返回空(nil ).多次请求或调用可以被链接在一起形成一个链,如果任何一个节点为空(nil )将导致整个链失效. 注意: 的可选链和 Objective-C 中的消息为空有些相像,但是 Swift 可以使用在任意类型中

IOS开发语言Swift入门连载---属性

IOS开发语言Swift入门连载-属性 属性将值跟特定的类.结构或枚举关联.存储属性存储常量或变量作为实例的一部分,计算属性计算(而不是存储)一个值.计算属性可以用于类.结构体和枚举里,存储属性只能用于类和结构体. 存储属性和计算属性通常用于特定类型的实例,但是,属性也可以直接用于类型本身,这种属性称为类型属性. 另外,还可以定义属性监视器来监控属性值的变化,以此来触发一个自定义的操作.属性监视器可以添加到自己写的存储属性上,也可以添加到从父类继承的属性上. 存储属性 简单来说,一个存储属性就是