好久没写博客了,之前还打算把毕业设计中涉及到的两个算法拿出来说说(脸型分析 + 声音分析),博文都写了一半了,后来实在太忙了,那篇随笔也就沉在草稿列表中没动过。
我原先是专职 .net 开发的,在公司负责的项目是内部自用的销售管理系统,由于不需要出去"抛头露脸",所以公司干脆什么也没配置(指产品、设计、前端等等,开发设备还是有的),于是所有工作全包了。原本对自身的计划是,后续会慢慢转产品方面的。
后来,也算是一个契机,公司所有移动端的人基本走光了(iOS 全走了,Android 的好像只剩 2 个!!公司内部的事,这里就不多说了),于是上头经理就打算让我们转到移动端开发。.net 和 java 一直都是"死对头"(自己的理解,求别喷),所以我不会选 Android,WP 市场还不够,转过去对自己竞争力的提升不大,于是乎选择了 iOS 开发,于是乎便有了这篇《.net 码农转战 iOS - 初探》。。。
大学时期有一点 C 的基础,但是对 OC 完全不知,这次属于从 0 开始(不选择 swift 开始,其实是怕它还不够成熟。语言这东西,其实说到底是相通的,理解了基础的东西,还怕以后学不会其他的么!)。
我是属于自学的,看视频、查资料一步步慢慢走。
学习真的需要动手敲键盘,单单只是看一下是记不住理解不了的,至少我还没到那个看看就会的地步。。。
· 我从 xcode5 开始,这时候已经少了很多内存管理的代码了(基本不用写 release 了),但是不需要你写,并不代表不需要你了解。所以内存管理需要详看。
· 命名空间,OC 里是没有这个概念的。区分两个不同的类,仅仅是依靠类名。所以一般都会在真正类名前,加一个前缀用来区分,例如 NSString(NS 开头的代表为 MAC OS X 的核心,即 NeXTSTEP 的缩写)、CGPoint。。。许多程序员都会使用自己名字的缩写做类的前缀。
· OC 大量使用指针,而且需显性表示(NSString *str; str 是一个指针变量,前面需加一个 "*" 显性体现,表示它是一个指向 "字符串" 的变量)。.net 中也有这个概念,只是不需要显性表明("*"),参考 .net 中,类、string 的声明。
· @"",OC 中字符串的写法,前面必须加一个 "@" 表示是 NSString 类型;
· NSLog() 方法,即 .net 中 Console.WriteLine 方法,支持字符串的 Format,例如 NSLog(@"%@, %i, %f", @"1", 1, 1.0);(@"%@" 功能很强大,类似于 .net 中 ToString() 方法)。
· 类的声明,创建一个普通的类,包含一个 .h 文件和一个 .m 文件(例如 SLTest.h & SLTest.m),是成对出现的,.h 文件为头文件,一般用来做类的声明,类似 .net 里的抽象类;.m 文件为实现文件,用来实现对应的"抽象类"。
/** SLTest.h **/ //使用import引入头文件 //Foundation为基础框架 //import表示该头文件只被包含一次,无论该命令在整个程序中出现多少次 #import<Foundation/Foundation.h> //用interface标明是类的声明 //该类继承自NSObject,类似.net里的基类object @interfaceSLTest:NSObject { //声明成员变量 } //声明公有方法 @end /** SLTest.m **/ //使用import引入头文件 #import"SLTest.h" //implementation标明是类的实现 @implementationSLTest //定义、实现私有方法 //实现公有方法 @end |