初学Objective-C语法

先自我介绍下吧,我09年接触iOS开发,10年开始第一份正式的iOS开发的工作,算下来有5、6个年头了,接触过社交、工具、电商、阅读等类型的应用,但是....到现在为止竟没有一个正式的博客,也算是够懒的了。好吧,今天开始准备把之前积累的一些经验分享出来。希望大家给点掌声👏👏👏👏,谢谢~

本人是从C++转向iOS开发的,所以先谈谈刚接触iOS开发容易犯的几个错误:

1.  Objective-C的语法问题

    OC采用的语法跟C++很不一样,初学时最容易搞错的就是语法了,我是花了两天的时间才习惯过来。C++ 采用的是. 和->来作为变量或属性的连接符,而且可以多个函数或者属性连续调用; 而OC中方法调用方法是用[],调用的对象和方法之间用空格分开,.是用来调用属性的。举个栗子来说,要让对象a调用print方法,print方法有一个参数,是一个字符串test,那么 C++的写法是这样的:

     a.print("test");

而Objective-C是这样的:

    [a print:@"test"];

如果print方法是a某个公开的成员变量m_aaa的方法,那么C++是这样写的:

    a.m_aaa.print("test");

或者 

   a->m_aaa.print("test");

而Objective-C是这样的(Objective-C中没有公开的成员变量,类似的变量叫做属性):

   [a.m_aaa print:@"test"];

怎么样,是不是很容易搞混淆?

2. 再说说属性和成员变量的区别

Objective-C中有两种变量,一种叫成员变量,写在@interface {} 里面

@interface XXXViewController :UIViewController {

NSArray*m_array;

}

这种跟C++是一样的,只是C++有public,private,protected之分,而OC中没有这些修饰符,OC中的这种变量如果是写在头文件中泽默认是protected的,如果是写在m文件中则是private的。(OC中也有@public关键字,不过好像并没有什么用)

另一种叫属性,是写在@interface {} 外面的,类似于C++中的公有的成员变量,可以被对象外部访问

@property NSArray *array;

(其实,还有一种匿名类别中的属性,是不可以被对象外部访问的,这里为了避免混淆,先不介绍了)。编译器会将属性自动展开为一个带下划线前缀的同名的成员变量,并为其添加set 和get 方法,也就是说,你定义了一个名为array的属性,编译器会生成一个_array的成员变量,并生成了两个方法:

-(NSArray*)array;   

以及 -(void)setArray:(NSArray*)array; (这里遵循Cocoa命名的驼峰原则,第一个a大写了)

在Xcode6之前,要展开一个属性是需要在m文件中给属性添加@synthesize 关键字的,Xcode6之后不需要了,算是编译器的一个优化。

3.判断两个对象是否相等

   跟很多语言不同的是,OC中不能直接用==来判断两个对象是否相等,而是通过一个函数isEqual: 来判断(这点跟C++倒是一样),因为==判断的是对象的指针,而非对象的内容。但是判断对象是不是为空(nil)是可以直接用== 来的。不同类型的对象是不能判断是否相等的。

判断字符串是否为空也可以通过字符串的length属性是否等于0来判断,比如说要判断一个字符串obj是否为空,可以用 [obj isEqual:@""],或者obj.length == 0。 后台说的字符串为空一般是指@"", 而OC中的空是指nil, 如果在工作中你经常跟后台调试http接口的话,就要特别注意这一点。

4. 数据存储

iOS中有一个沙盒的概念,应用程序产生的数据只能存到对应的沙盒中,所谓沙盒就是一个限制了访问权限的文件夹,应用程序彼此之间不能相互访问(除非提供扩展,或者系统应用访问你的程序),以最大程度的减少数据污染和泄漏的可能性。应用程序有几个常用的文件夹:Document、 Temp、 Cache , 其中Document用来存用户自己创建的数据,这种数据一般比较重要,属于不可再生的,开启了iCloud之后可以被系统自动备份到云端;Cache和Temp用来存临时的数据,比如HTTP缓存,或者下载的图片等;  

另一个值得注意的问题就是数据库的访问。可能是因为之前写windows客户端经常用mysql的缘故吧,我还天真的以为iOS程序可以直接访问mysql,于是从网上下了一个mysql的库,本地建好了表,还写了一些SQL语句,等真正运行的时候发现编译出错,才知道原来iOS根本不支持mysql。 iOS本地支持的数据库只有sqlite,这个东东可以认为是一个单机版的mysql,语法跟mysql差不多,Cocoa SDK中有一套API可以操作他,但是非常难用,一般都会使用FMDB等第三方的代码库来操作。至于为什么iOS不能支持mysql,我到现在也没搞明白,可能mysql是分布式的吧。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,063评论 6 510
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,805评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,403评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,110评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,130评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,877评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,533评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,429评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,947评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,078评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,204评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,894评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,546评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,086评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,195评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,519评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,198评论 2 357

推荐阅读更多精彩内容

  • 01-常量与变量 学习swift第一步打印Hello World print("Hello World") swi...
    iOS_恒仔阅读 5,162评论 2 19
  • Swift 介绍 简介 Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序 ...
    大L君阅读 3,229评论 3 25
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,154评论 30 470
  • 上续 换了工作虽然工资不高,但是得到老板,同事的认可。什么杂活,累活都抢着做。做了一段时间也得心应手。就在这段时间...
    an平安的福阅读 275评论 0 1
  • 公元tanX年,古战场,乌江边。 江边有一个村子,唤作霸王村,因当年楚霸王项羽在此处兵败自刎而得名。话说霸王少年...
    86bb5e6576b4阅读 273评论 0 0