IOS实习周记26篇.docx

上传人:b****8 文档编号:23883461 上传时间:2023-05-21 格式:DOCX 页数:210 大小:7.82MB
下载 相关 举报
IOS实习周记26篇.docx_第1页
第1页 / 共210页
IOS实习周记26篇.docx_第2页
第2页 / 共210页
IOS实习周记26篇.docx_第3页
第3页 / 共210页
IOS实习周记26篇.docx_第4页
第4页 / 共210页
IOS实习周记26篇.docx_第5页
第5页 / 共210页
点击查看更多>>
下载资源
资源描述

IOS实习周记26篇.docx

《IOS实习周记26篇.docx》由会员分享,可在线阅读,更多相关《IOS实习周记26篇.docx(210页珍藏版)》请在冰豆网上搜索。

IOS实习周记26篇.docx

IOS实习周记26篇

第一周

实习第一个礼拜,算是适应期。

主要了解一些公司的背景、产品、发展方向等。

刚到实习公司,不是像学校里的朝九晚五,而是朝八晚六。

我们不可能简单的了解一些企业文化,简单的学学新的知识就可以了,我们的这个实习必将是一个繁忙的实习,也必将是一个充实的,进步的实习。

来到这里,我们要忘掉大学里自由的作息时间,克服困难,养成良好的工作生活习惯 。

基于各方面的原因,虽然在去之前我们做了比较充足的准备,但还是遇到了一些困难,例如学习时间长,实战比较繁多,但时间又比较的短,难以保证按时按质按量完成。

下午下了班,员工们都回去了,我还在那儿练习,一直到晚上8点,才能回住处休息。

中午也没有休息的地方,只能趴在电脑前休息一会,一周下来,相当地疲惫。

但我们都明白自己来实训的任务,都坚持着完成自己的任务和使命。

这个星期熟悉了工作环境、C编程以及Xcode的环境配置。

等慢慢熟悉起来,做起事情也越来越顺手了.简单的总结为几个字,那就是:

多看,多问,多观察,多思考!

第二周

实习第二个礼拜,主要是熟悉Object-c的基础语法,把基础打扎实,以后在开发中才能如鱼得水。

学习总结如下几点:

1、类之间的关系:

实现以及调用。

2、基本数据类型:

整数型、浮点型、字符型、布尔型。

3、常用逻辑语句和循环语句:

switch只支持int类型判断,没有写break易穿透至下一个循环。

Break:

强行退出循环;

5、修饰符:

实例方法和类方法。

设置调用权限。

6、Static关键字:

声明全局变量,它修饰的变量可以全局调用。

7、self关键字:

指向自身引用。

8、string:

字符串类型。

(两个string变量可以通过拼接成为一个字符串)

第三周

实习第三个礼拜,主要是熟悉OC的高级语法(核心)

 iOS程序是基于Objective-C语言的,可以认为iphoneSDK就是O-C上的各种框架的集合,O-C是学习iOS开发的基础,从基础做起是我的研究之道。

 

 

   进入Mac系统后,需要安装XCode,这是iOS程序开发的IDE,此时可以注册为Apple的开发者,申请一个免费的ID后就可以在Apple开发者网站下载XCode了。

 

   打开XCode后,选择XCode,打开Preferences,选择Download选项卡,如下图所示。

在这里需要可以安装CommandLineTools。

之后就可以在Terminal中来编写代码,当然也可以直接使用XCodeIDE。

 

 

   打开终端Terminal,创建一个文件夹来作为我们程序开发的文件夹,然后创建我的一个O-C文件first.m,如下图所示:

 

 

   之后编写如下所示的代码:

 

 

   那么按如下所示操作:

 

 

   编译后没有任何问题,那么就直接执行程序即可。

得到了一行输出,可以看上图所示内容。

同时在Progs文件夹中,看到了可执行文件的生成:

 

 

   此时点击-first,那么就会启动程序,得到如下内容:

 

 

   这个输出和上面得到的是一样的。

 

   下面来解释第一个程序,逐行来看:

#import,这句话会告诉O-C编译器(示例中使用的是LLVMClangObjective-C)找到并处理头文件Foundation.h,这是一个系统的头文件,因为后续要使用其中定义的类或函数,所以必须导入。

#import表示将该文件导入到当前程序中,可以类比Java中的import导包语句。

 

   接下来是主函数声明:

intmain(intargc,constchar*argv[]),主函数表示程序从这里开始执行,这在C/Java中都是一致的,只是函数的参数略有不同罢了,其返回值为int型。

 

   下面进入主函数体部分,第一句是@autoreleasepool{},字面含义是自动释放池,也就是说其中的语句会放到自动释放池的语境中执行。

自动释放池机制可以在创建新对象时,系统可以有效管理所使用的内容。

关于其具体内容这里先不解释。

 

   在自动释放池中只有一条语句:

NSLog(@"HelloWorld!

"),这是一个函数调用,NSLog函数接受了参数@"HelloWorld!

",这里的@表示字符串类型为NSString,如果不加@,那么就是普通C类型的字符串。

NSLog是一个系统函数,它会输出其参数或者参数列表中的内容。

 

   main函数中最后一句是return0,这是主函数声明时需要的返回值,在这里0表示程序正常结束。

 

   使用clang编译Objective-C程序时,需要使用-framework来指定我使用的库Foundation,-o表示生成目标文件的名称,设置为-first,那么成功编译后,就看到了生成的可执行文件,在Terminal中使用./-first来执行程序就会得到输出,当然也可以点击可执行文件来打开它。

 

   下面来看怎么在XCode中创建项目,首先打开XCode:

 

 

   选择第一项CreateanewXCodeproject,然后弹出如下窗口,继续设置:

 

 

   这里选择CommandLineTool,也就是控制台的程序,点击Next继续:

 

 

   为我的应用项目命名,然后选择Type为Foundation,其含义之前都说过了,然后点击Next继续:

 

 

   选择项目的存放位置,这里使用默认的位置-桌面,之后点击Create创建项目,那么我在XCode中就得到了一个系统自动为我生成的项目Prog1:

 

 

   打开main.m,这个O-C源文件是系统自动为我生成的,可以看到其内容在XCode环境中已经高亮显示了,来看一下完整的代码:

 

C代码  

1.//  

2.//  main.m  

3.//  Prog1  

4.//  

5.//  Created by Nan Lei on 12-12-25.  

6.//  Copyright (c) 2012年 Nan Lei. All rights reserved.  

7.//  

8.  

9.#import   

10.  

11.int main(int argc, const char * argv[])  

12.{  

13.  

14.    @autoreleasepool {  

15.          

16.        // insert code here...  

17.        NSLog(@"Hello, World!

");  

18.          

19.    }  

20.    return 0;  

21.}  

   这里系统为我加了很多注释,在O-C源代码中使用注释和C语言是一样的,就是单行的双斜杠//和多行的/*...*/注释段。

主体程序和我之前编写代码是完全一致的,在XCode中点击XCode左上方的Run按钮来运行程序:

 

 

   编译成功后会得到输出,就是一句HelloWorld!

我们修改源代码再做一组测试:

 

 

   代码如下:

 

C代码  

1.#import   

2.  

3.int main(int argc, const char * argv[])  

4.{  

5.      

6.    @autoreleasepool {  

7.          

8.        // insert code here...  

9.        NSLog(@"Programming in Objective-C is fun!

");  

10.        NSLog(@"Testing...\n1.\n2..\n3...");  

11.          

12.    }  

13.    return 0;  

14.}  

   这里看到的结果是和C/Java中都是类似的,使用\n表示换行,那么得到的输出自然也是带换行的了。

在学习C语言的过程中,认识了第一个程序,紧接着就是变量的表示了,那么在O-C中,变量的表示方法和C语言都是一致的,看如下的程序:

 

C代码  

1.#import   

2.  

3.int main(int argc, const char * argv[])  

4.{  

5.      

6.    @autoreleasepool {  

7.        int sum,v1,v2;  

8.          

9.        v1=12;  

10.        v2=25;  

11.        sum=v1+v2;  

12.          

13.        NSLog(@"The sum of %i and %i is %i",v1,v2,sum);  

14.          

15.    }  

16.    return 0;  

17.}  

   在XCode中运行后,我得到如下输出:

 

 

   这里就使用了NSLog函数的参数列表输出功能,%i表示此位置输出的是整型,那么后面的参数会按照位置顺序来填充到相应的位置中去。

就得到了我想要的结果。

 

第四周

实习第四个礼拜,主要熟悉了OC的对象思想

 字面来理解Objective-C就是对象化的C,那么也就是说O-C是对C的扩展,加入了对象的概念。

当然C++也是有对象概念的,只是两者的编译环境有所不同。

 

   面向对象的概念不是针对某一种编程语言而言的,它是一种程序设计思想。

最基本的面向对象包括了类,对象和方法这三个概念。

举日常生活中的例子,比如10路公交车,10路有几十辆车,每一辆车都是一个对象,10路并不是拥有任意一辆车,而是分配给它的特定的车。

每一辆车都会有一个编号,这在公交系统中是唯一的。

 

   那么在面向对象术语中,10路的任意一辆车都是公交车的一个实例。

定义Vehicle为汽车类的类名,那么一辆车就是从该类创建的。

每制造一辆车,都会创建汽车类的一个新的实例,而汽车的每个实例都称为一个对象。

 

   不同车辆的型号不同,那么会有不同的属性,比如载客量,功率等。

而使用车辆执行特定的操作,比如:

加油,起步,到站,(可能还会有)检修,清洗等。

这些操作可以对任意一辆车进行操作。

这些对实例的操作称为方法。

 

   如果想知道该车一共生产了多少辆,那么这个方法是适用在类上的,所以叫类方法。

而想知道每辆车的行驶总里程或者当前油量,那么不同的车会有不同的数值,这个方法就是实例方法。

 

   下面来应用具体的语法来看看Objective-C中的类,分数是一个数学概念,包含两个部分(分子和分母),知道了如何定义变量,那么使用变量,可以这么来表示一个分数:

 

C代码  

1.#import   

2.  

3.int main(int argc, const char * argv[])  

4.{  

5.      

6.    @autoreleasepool {  

7.        int numerator=1;  

8.        int denominator=3;  

9.  

10.        NSLog(@"The fraction is %i/%i",numerator,denominator);  

11.          

12.    }  

13.    return 0;  

14.}  

   这里只是用于显示,并没有考虑分母为0的情况,当然这么写就是分母为0也不会有问题,因为代码中并没有真实的分数计算。

运行代码,就会得到输出:

 

 

   下面编写一个Fraction类来表示分数,在项目Prog1上点击右键,选择NewFile,然后看到如下图所示窗口:

 

 

   选择Objective-Cclass类型,点击Next继续:

 

 

   给我的分数类起个名字Fraction,类型已经为我选好了,就是NSObject类型,点击Next继续:

 

 

   选择一个位置,将这个类保存在Prog1下,直接点击Create创建即可,得到如下图所示的两个文件:

 

 

   Fraction.h是头文件,Fraction.m是Objective-C的类文件,在头文件中,需要编写@interface部分,代码如下:

 

C代码  

1.//  

2.//  Fraction.h  

3.//  Prog1  

4.//  

5.//  Created by Nan Lei on 12-12-25.  

6.//  Copyright (c) 2012年 Nan Lei. All rights reserved.  

7.//  

8.  

9.#import   

10.  

11.@interface Fraction :

 NSObject  

12.  

13.-(void) print;  

14.-(void) setNumerator:

 (int) n;  

15.-(void) setDenominator:

 (int) d;  

16.  

17.@end  

    可以先不管这些代码的具体含义,之后在Fraction.m文件中编写类的实现和主函数,代码如下:

 

C代码  

1.//  

2.//  Fraction.m  

3.//  Prog1  

4.//  

5.//  Created by Nan Lei on 12-12-25.  

6.//  Copyright (c) 2012年 Nan Lei. All rights reserved.  

7.//  

8.#import "Fraction.h"  

9.  

10.@implementation Fraction  

11.{  

12.    int numerator;  

13.    int denominator;  

14.}  

15.  

16.-(void) print  

17.{  

18.    NSLog(@"%i/%i",numerator,denominator);  

19.}  

20.  

21.-(void) setNumerator:

(int)n  

22.{  

23.    numerator=n;  

24.}  

25.  

26.-(void) setDenominator:

(int)d  

27.{  

28.    denominator=d;  

29.}  

30.  

31.@end  

32.  

33.  

34.int main(int argc, const char * argv[])  

35.{  

36.    @autoreleasepool {  

37.        Fraction *myFraction;  

38.          

39.        myFraction=[Fraction alloc];  

40.        myFraction=[myFraction init];  

41.          

42.        [myFraction setNumerator:

1];  

43.        [myFraction setDenominator:

3];  

44.          

45.        NSLog(@"The value of myFraction is:

 ");  

46.        [myFraction print];  

47.    }  

48.    return 0;  

49.}  

   代码已经写完,下面先运行出效果看看。

这里注意在一个项目中不能有两个主函数的定义存在,那么要把之前main.m文件删除,确保运行没有问题,点击Run,就会得到如下输出:

 

 

   代码运行没有问题,来看看这两个文件中的代码都是什么意思。

 

    先看头文件,这中间#import很好理解,就是导入系统类。

之后的@interfaceFraction:

NSObject...@end是类的定义部分。

以@interface开始,后面跟着类名,冒号后面是父类的名称,说明我的类是继承自NSObject的,关于继承的概念这里先不说。

那么中间的代码就是类中方法/类属性定义了。

 

   关于类名的命名规则,方法名的命名规范,这里就不再多说,按照习惯和约定来编写即可。

首先对于一个方法,开始为负号(-),这是告诉Objective-C的编译器,该方法是一个实例方法,如果是正号(+),那么该方法就是类方法,注意和UML中的+/-区分,这里的+/-不表示访问控制。

 

   紧跟正负号后面的是方法返回值,这里我们定义的三个方法都是(void),无返回值类型的。

那么这里可以使用(int)作为整型返回值,(double)作为双精度浮点型返回值。

返回值定义后面的就是方法名,如果该方法没有参数,直接分号结束即可,比如-(void)print; 

   如果方法接受参数,那么在方法名后面加上冒号,冒号之后是参数定义,也是(参数类型)参数名称的格式,比如(int)m。

那么我们在头文件中编写的所有代码的含义就都明白了。

 

   下面来看.m文件,首先是#import"Fraction.h",表示导入定义的头文件,而头文件中已经导入了Foundation.h,那么这里也会自动导入Foundation.h。

 

    @implementationFraction...@end是实现部分。

格式就是@implementation后跟着类名,以@end结束。

 

   在@interface部分我们没有定义属性,因为本例中的变量都是成员变量而不是类属性,一组大括号中放置的是实例变量定义,比如本例的 

C代码  

1.{  

2.    int numerator;  

3.    int denominator;  

4.}  

   之后是对方法的实现,方法声明后的一对儿大括号内就是具体的方法实现代码,本例中对print方法的实现就是调用系统的NSLog函数,而setNumerator和setDenominator方法就是赋值操作。

 

   最后是主函数部分,就是我的具体业务代码实现,Fraction*myFraction;表示声明一个引用(指针)变量myFraction,其类型是Fraction。

有了引用,要创建一个分数,可以使用myFraction=[Fractionalloc];来完成,alloc是allocate的简写,表示为新的对象分配内存空间,这个写法就是告诉Fraction类要执行alloc方法,现在这个方法我们没有定义,那就是系统类库提供的。

 

   使用alloc分配空间后,紧接着是[myFractioninit];这要对我的myFraction变量进行初始化。

同理,init也是系统提供的初始化方法。

和alloc方法一起,可以看做Java中的newFraction()来生成一个Fraction对象,其实这里使用new方法来合并alloc方法和init方法也是可以的,写为Fraction*myFraction=[Fractionnew]。

 

   以上两个语句可以合并为

Java代码  

1.Fraction *myFraction=[[Fraction alloc] init];  

来写,这是O-C编程中比较常见的语句。

 

   之后的[myFractionsetNumerator:

1];是告诉myFraction调用setNumerator方法,并且提供了一个变量1作为参数。

同理[myFractionsetDenominator:

3];就好理解了。

之后的NSLog代码不再解释,最后的[myFractionprint];就是调用myFraction的print方法来打印Log了。

 

   这里没有release操作,因为我使用的XCode版本高于6,系统会默认开启ARC机制,自动释放内存。

 

   下面来看使用多个分数的示例(主函数部分如下,其余内容和之前相同):

 

C代码  

1.int main(int argc, const char * argv[])  

2.{  

3.    @autoreleasepool {  

4.        Fraction *frac1=[[Fraction alloc] init];  

5.        Fraction *frac2=[[Fraction alloc] init];  

6.          

7.        [frac1 setNumerator:

1];  

8.        [frac1 setDenominator:

3];  

9.          

10.        [frac2 setNumerator:

1];  

11.        [frac2 setDenominator:

5];  

12.          

13.        NSLog(@"First fraction is:

 ");  

14.        [frac1 print];  

15.          

16.        NSLog(@"Second fraction is:

 ");  

17.        [frac2 print];  

18.    }  

19.    return 0;  

20.}  

   运行程序,得到如下输出:

 

 

   说明程序的编写是没有问题的。

回过头来看Fraction*frac1=[[Fractionalloc]init];这说明声明了一个指针类型的引用变量*frac1,创建的对象是Fraction,在alloc后内存中创建出该对象并返回内存地址给指针变量*frac1,申请完空间需要对对象进行初始化,所以就用到了init方法。

 

   从本例中可以看出,每创建一个新对象时,它都会有自己的一组实例变量。

上面给出的是为实例变量复制的set方法,但如果想通过对象引用来访问实例变量,在O-C中却做不到,此时需要编写新的方法来获取实例变量的值,这里就涉及到了“数据封装”

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1