y谷氨酰基转移酶高是什么原因| 梦见牙掉了是什么意思| 才高八斗是什么动物| 紫菜吃多了有什么坏处| 奔走相告的走是什么意思| 道德制高点什么意思| 子宫出血是什么原因造成的| 多巴胺分泌是什么意思| 气管炎的症状吃什么药好得快| 1998年五行属什么| 1955年是什么年| 5月14日什么星座| 胎动少是什么原因| 推迟月经吃什么药| 高回声是什么意思| 卤牛肉用什么部位| 野生葛根粉有什么功效| 什么是清关| 眩晕症吃什么药| 边度什么意思| 腕管综合征挂什么科| 指甲有白点是什么原因| 什么病不能吃竹笋| 郁郁寡欢的意思是什么| 背疼应该挂什么科| kh什么意思| 属蛇女和什么属相最配| 苦菜是什么菜| abo溶血症是什么| 牙齿遇冷热都痛是什么原因| 磕是什么意思| 心脏有个小洞叫什么病| 分差是什么意思| 念想是什么意思| 喷的右边念什么| 治胃病吃什么药| 中国什么武器世界第一| 8月24号是什么星座| 小便有血是什么原因| 什么颜色防晒效果好| 燕条和燕盏有什么区别| 漏尿女性吃什么药最好| 鬼迷日眼是什么意思| 叶酸片有什么作用| 无量寿佛是什么意思| 精囊腺囊肿是什么意思| 脑血管痉挛是什么原因引起的| 喝红糖水有什么好处和坏处| 河童是什么| 浑身乏力什么病的前兆| 孕晚期高血压对胎儿有什么影响| 梦到和老公吵架是什么意思| 拔完智齿能吃什么| 什么的羽毛| 骑马标志是什么牌子| 布偶猫长什么样| 曼龙鱼能和什么鱼混养| 为什么养鱼养单不养双| r级电影是什么意思| 汪峰是什么星座| 福兮祸兮是什么意思| 利可君片是治什么病| 长期吃避孕药有什么危害| 皋读什么| 出家人不打诳语是什么意思| 维生素b9是什么| 摸摸唱是什么意思| 试管都有什么方案| 炳是什么意思| 农历九月是什么月| 9月15号是什么星座| 巴西龟吃什么食物| 梦到自己老公出轨是什么意思| 放疗后不能吃什么| 218号是什么星座| 风寒感冒吃什么食物| 鱼什么而什么| 化痰吃什么食物| 88年的属什么生肖| 高处不胜寒是什么意思| 伊朗是什么派| 双子座有什么特点| 莜面是什么面| 看男科挂什么门诊| 阴茎进入阴道什么感觉| 蹄花是什么| 多发纳氏囊肿是什么意思| 什么是跑马| 高考四百分左右能上什么学校| 隐形眼镜没有护理液用什么代替| 自作多情是什么意思| 口腔医学技术可以考什么证| 生完孩子可以吃什么水果| 基层是什么意思| 什么的孙悟空| 什么是前列腺炎| 有编制是什么意思| 老什么什么什么| 耵聍是什么| 食用香精是什么| 统筹支付是什么意思| 梦见晒衣服是什么意思| ck香水属于什么档次| 国防部长是什么级别| 摩羯座女和什么星座最配| 胆怯的什么| 吃什么东西对肺部好| 我方了是什么意思| 慢性胃炎用什么药效果最好| 甘的部首是什么| 耷拉是什么意思| 艾滋病什么症状| 益生菌什么时候吃好| 唇炎看什么科最好| 疤痕修复用什么药膏好| 为什么海藻敷完那么白| 小孩几天不大便是什么原因怎么办| 不着相是什么意思| 心烦意乱是什么意思| 红斑狼疮是什么症状| 心脏传导阻滞是什么意思| 腐叶土是什么土| 蜘蛛的血是什么颜色的| 眼圈黑是什么原因| 扁平苔藓是什么病| 见多识广是什么生肖| 司法鉴定是干什么的| 腰底部疼痛跟什么病有关| 社保缴费基数是什么意思| 白带多是什么原因引起的| 副研究员什么级别| 苦不堪言是什么意思| 橱窗是什么意思| 河水什么的流着| 纳呆是什么意思| 2月什么星座的| 吃什么水果对嗓子好| 冒冷汗是什么原因| 做b超为什么要憋尿| 手指关节肿胀是什么原因| 梦见月经血是什么预兆| 舌苔重是什么原因| 岁月静好浅笑安然什么意思| 贫血看什么科| 古代天花是现代什么病| 正值当年什么意思| 女人梦见棺材是什么征兆| 喷的右边念什么| 宝宝发烧吃什么食物好| 梦见掉了一颗牙齿是什么征兆| 鱼靠什么呼吸| 梅长苏结局是什么| 手肘关节疼痛什么原因| 红楼梦大结局是什么| 6月17什么星座| bpd是胎儿的什么意思| 虚情假意是什么意思| 高大上是什么意思| 基友什么意思| 一月二十号是什么星座| 什么的茄子| 嫩模是什么意思| 小舅子是什么意思| 指甲变黑是什么原因| 指甲脱层是什么原因| 老想喝水是什么原因| 尿蛋白是什么症状| 重阳节是什么意思| 血管瘤有什么症状| 什么是寒性食物| 慰安妇是什么意思| 感冒有什么症状| 生死有命富贵在天什么意思| 呕吐是什么原因引起的| 放养是什么意思| 7月14什么星座| 什么鱼吃泥鳅| 晕3d是什么原因| 维生素b6治什么病| 打日本电话前面加什么| 93岁属什么生肖| 长脚气是什么原因引起的| 血管炎不能吃什么食物| 梦见手表是什么意思| 蓟类植物是什么| 1998年属虎是什么命| 梦见蒸馒头是什么意思| 女性什么时间是排卵期| 鼠疫是由什么引起的| 抗组胺药是什么意思| 右眼老跳是什么原因| 黄历今天是什么日子| 旌旗是什么意思| 早筛是检查什么项目| 桑叶茶有什么好处| 肝脏在什么位置| 乌龟白眼病用什么药| 213什么星座| 睾丸是什么东西| 人心隔肚皮什么意思| 未时是什么时候| 喜欢紫色的人是什么性格| pr医学上是什么意思| 老公护着婆婆说明什么| 酒店五行属什么| 婴儿感冒吃什么药| 有料是什么意思| 大便一粒粒的是什么原因| 鹅蛋脸适合什么刘海| 老年性脑改变是什么意思| 眼皮重是什么原因| 惆怅是什么意思| prince是什么牌子| 疥疮用什么药| 罗嘉良为什么娶苏岩| 银屑病吃什么食物最好| 生灵涂炭是什么意思| 红萝卜和胡萝卜有什么区别| 无机磷测定是检查什么| 心慌气短吃什么药最好| 乳糖不耐受喝什么奶粉| 硬度不够吃什么药| 梦见一个人死了是什么意思| 什么赴什么继| 抗凝药是什么意思| 什么主筋骨| 什么时候放开二胎| 虹吸是什么意思| 光影什么| 本自具足是什么意思| 男人长阴虱是什么原因| 逆钟向转位什么意思| 精分是什么意思| 阴道干涩是什么原因| 总是嗳气是什么原因| 月经结束一周后又出血是什么原因| 什么是黑天鹅事件| 从头再来什么意思| 梦见吐痰是什么意思| 女人吃山竹有什么好处| 刺激性干咳是什么症状| 软冷冻室一般放什么东西| 水瓶座和什么座最配对| 包干价是什么意思| 前列腺是什么东西| 氯化钠敷脸有什么作用| 驻马店古代叫什么| 脾阳虚吃什么药| 1885年属什么生肖| gg什么意思| 6月2日是什么星座| 知了是什么| 09年的牛是什么命| 什么祛斑产品效果好| 什么是三伏贴| 七月八日是什么日子| 宫殿是什么意思| 身体突然消瘦是什么原因| 低钾吃什么药| 见多识广什么意思| 藏红花泡水喝有什么功效| 万加一笔是什么字| 欧洲为什么没有统一| 烫伤用什么| 百度

国内外专家齐聚津城 共探胃癌精细化治疗

移动开发 iOS
Objective-C是C语言ANSI版本的超集,支持和C相同的基本语法。用C代码,你可以定义头文件和源码文件,以从详细实现的代码中分离出公开的声明。
百度 记者:抖音如何看待企业营销,在政策上会有什么限制吗?王晓蔚:所有符合记录美好生活的视频,抖音都是很欢迎的。

Objective-C入门学习是本文要介绍的内容,本文档没有教授任何有关于C语言的知识。如果你还不熟悉C语言,阅读本文之前应该学习一下C语言的基础知识。阅读本文前,你也要了解面向对象的基本概念。

对象的使用以及面象对象设计模式都是设计Cocoa程序的基础,理解它们是如何相互影响的是编写你的应用的关键。了解这些概念,请查看  使用Objective-C进行面向对象编程。另外, 查看 Cocoa基本原理入门 可以了解有关在Cocoa中用到的设计模式

如果你已经熟悉C语言,并且之前使用过面向对象语言编写过程序,下面的内容将会帮助你学习Objective-C的基础语法。许多传统面向对象的思想,比如封装、继承、多态,都会在Objective-C中体现。虽然也有一些重要的不同点,但这些不同点都会在这篇文章中提到,如果需要有更多详细信息可用。

有关Objective-C的语言和语法的详细信息, 可以查阅  Objective-C编程语言.

  1. src="/CuteSoft_Client/CuteEditor/Images/anchor.gif">  

Objective-C: C语言的超集

Objective-C是C语言ANSI版本的超集,支持和C相同的基本语法。用C代码,你可以定义头文件和源码文件,以从详细实现的代码中分离出公开的声明。 Objective-C头文件下面列出的扩展名  Table 1-1.

  1. src="/CuteSoft_Client/CuteEditor/Images/anchor.gif">  

Table 1-1  Objective-C代码的文件扩展名(单击放大)

 Objective-C入门学习

当你想在你的代码中包含头文件时,你可以使用 #import 指令。 它比较像 #include,除了它必须要确定相同文件不能被包含多次。 Objective-C的示例和文档都更喜欢使用 #import, 你的代码应该也这样。

和大多数其它面向对象语言一样,Objective-C里的类也提供基本的结构,用来封装带有行为的一些数据。一个对象是一个类的运行实例,包含类中声明变量的实例在内存中的复制,以及指向该类的方法。

Objective-C中类的定义,要求两个明显的部分:接口和实现。接口部分包含类的声明、定义成员变量,及与此类关联的方法。接口通常在a .h 文件里。实现部分包含类的方法实际代码。实现通常在 a .m 文件里。

图1-1 展示声明MyClass类的语法,它继承自Cocoa的基类  NSObject。这个类的声明开始于 @interface 编译指令,结束于 @end 指令。仅跟着类名的(以冒号分割)是父类名。类的实体变量(有时简称ivars,在一些其它语言中称作成员变量)声明在以大括号({和})括起来的代码块中。实体变量后面是类的方法声明列表。以分号做为每个实体变量和方法的结束标记。

  1. src="/CuteSoft_Client/CuteEditor/Images/anchor.gif"> 

 图1-1  定义一个类 

  1. src="/CuteSoft_Client/CuteEditor/Images/anchor.gif">  

小提示: 这个接口只声明了方法,类也可以声明 属性。了解属性的更多信息, 请查看 “声明属性”.

Objective-C支持包含对象的强弱两个类型的变量。在变量声明时,强类型的变量包含类名,弱类型的变量使用类型  id 代替对象。弱类型变量在像集合类中使用频繁,在一个集合中的对象的实际类型可能是未知的。如果你使用过强类型的语言,你可能会认为使用弱类型会引起问题,但是在Objective-C程序中它们实际上提供了很大的灵活性和更强大的动态性。

下面的例子展示了强类型和弱类型变量的声明格式:

  1. MyClass *myObject1; // 强类型  
  2. id myObject2; // 弱类型 

注意在第一个声明里的 * 号。在Objective-C中,对象的引用叫指针。如果你对指针没有很清晰的认识,不用担心,不是必须要成为一个指针专家才能使用Objective-C进行编程的。你只要记住在声明强类型对象的变量名前加上  *  就可以了。 弱类型 id 本身就意味着是个指针。

  1. src="/CuteSoft_Client/CuteEditor/Images/anchor.gif">  

方法和通信

Objective-C中的类可以声明两种类型的方法:实体方法和类方法。一个实体方法是在这个特定类的实例中才能执行的方法,换句话说,在调用实体方法前,你必须首先要创建这个类的实例。类方法,相对的,不需要创建实例。当然更可以在创建实例之后调用。

方法的声明由方法的类型标识符、一个返回值类型、一个或多个签名关键字、参数类型和名称信息组成。   图1-2 展示实体方法  insertObject:atIndex:的声明格式。

  1. src="/CuteSoft_Client/CuteEditor/Images/anchor.gif"> 

 图1-2  方法声明的语法 

 Objective-C入门学习


 
声明开始于减号(-) ,减号用来标识这是一个实体方法。这个方法的实际名称 (insertObject:atIndex:) 是所有签名关键字的拼接,包括冒号。冒号声明了当前的参数.如果方法没有参数,你就可以省略第一个签名关键字。在这个例子中,该方法有两个参数。

当你想调用这个方法时,你可以通过向对象 通信 。 通信内容是方法签名和方法要求参数信息。

信息是用中括号 ([ 和 ])包裹的。在中括号里面,接收信息的对象在左边,信息(包括信息要求的参数)在右边。例如,发送信息insertObject:atIndex: 到变量名为 myArray 的对象,你会用到下面的语法:

  1. [myArray insertObject:anObject atIndex:0]; 

为了避免声明多个局部变量来保存临时结果, Objective-C允许你嵌套信息。来自每个嵌套信息中的返回值,可以被用做参数、目标、或另一个信息。例如,你可以用信息来代替前面例子中任意使用过的变量。从而,如果你有一个叫  myAppObject 的对象,它有访问数组对象和将对象插入数组的方法,你可以将前面的例子写成像下面这样:

  1. [[myAppObject theArray] insertObject:[myAppObject objectToInsert] atIndex:0]; 

Objective-C也提供用句点来调用 存取器方法。存取器方法获取和设置一个对象的状态,典型的格式为  -(type)propertyName 和 -(void)setPropertyName:(type)。使用句点语法,你可以将前面的例子重写成:

  1. [myAppObject.theArray insertObject:[myAppObject objectToInsert] atIndex:0]; 

你也能使用句点语法赋值:

  1. myAppObject.theArray = aNewArray

用不同语法写也比较简单,

  1. [myAppObject setTheArray:aNewArray];. 

尽管前面的例子都是发送信息给一个类的实例,你也可以发送信息到类本身。当你要通信到一个类,你指定的方法必须被定义成一个类方法,而非实体方法。

典型的,你使用类方法来创建类的新实例,或访问有关此类的一些共享信息。类方法的声明语法除了一点不同,其它完全和实体方法一样。用加号(+)来代替用减号(-)作为方法类型的标识符。

下面的例子就是来说明如何使用类方法作为一个类的工厂方法。在这个例子中,方法 array 是类 NSArray 的类方法—继承自 NSMutableArray— 它用于分配和初始化该类的新实例并将它的返回到代码中。

  1. NSMutableArray *myArray = nil; // nil等同NULL  
  2. // 创建一些新数组并赋给变量myArray。  
  3. myArray = [NSMutableArray array]; 

清单1-1 展示类了在前面例子中 MyClass 类的实现代码。像类的声明一样,类的实现通过两个编译指令识别 —这里, @implementation 和 @end。这些指令提供编译器需要的范围信息,来定位相对应类的封闭方法。方法的声明要匹配接口中相应的声明,不包括代码块里的内容。

  1. src="/CuteSoft_Client/CuteEditor/Images/anchor.gif">  

清单1-1  一个类的实现

 Objective-C入门学习

  1. @implementation MyClass  
  2.    
  3. - (id)initWithString:(NSString *)aName  
  4. {  
  5.  self = [super init];  
  6.  if (self) {  
  7.  name = [aName copy];  
  8.  }  
  9.  return self;  
  10. }  
  11.  
  12. + (MyClass *)createMyClassWithString: (NSString *)aName  
  13. {  
  14.  return [[[self alloc] initWithString:aName] autorelease];  
  15. }  
  16. @end  
  17. src="/CuteSoft_Client/CuteEditor/Images/anchor.gif"> 

声明属性

声明属性是代替声明及简单实现存取器方法的方便形式。

在类接口里,可以包含属性声明和方法声明。基本的定义用 @property 编译指令,之后是类型信息和属性名称。你也可以定制配置属性,比如定义存取器方法如何执行。下面的例子展示一个简单属性的声明:

  1. @property BOOL flag;  
  2. @property (copy) NSString *nameObject; // 在赋值时复制对象。  
  3. @property (readonly) UIView *rootView; //声明一个只读方法 

每个可读属性指定一个与该属性同名的方法。每个可写属性指定一个额外的方法,格式为  setPropertyName, 属性名的首字母要大写。

在你的类的实现里,你可以使用 @synthesize 编译指令来要求编译器依照声明规格创建方法:

  1. @synthesize flag;  
  2. @synthesize nameObject;  
  3. @synthesize rootView; 

你可以合并 @synthesize 语句到一行中,如果你愿意:

  1. @synthesize flag, nameObject, rootView; 

从实际上说,属性减少了你不得不写的冗长代码的数量。因为大多数存取器方法都是以类似的方式执行的,属性去掉了类中公开的每个属性实现读写方法的重复。相反的,你只要指定你想使用属性的行为,会在编译时生成实际的读写方法。

要了解如何在你的类中声明属性,请查看  “声明属性” 在  Objective-C编程语言里。

字符串

作为C语言的超集,Objective-C和C语言一样在指定字符串上支持相同的约定。换句话说,字符用单引号包裹、字符串用双引号包裹。可是Objective-C框架典型的是不使用C语言式的字符串。他们以  NSString 对象的方式传递字符串。

 NSString  类提供一个对象封装字符串,这样可以具有你想要的所有优点,包括为任意长度的字符串创建内存管理、支持Unicode、  printf-式的格式化工具集,还有更多。因为这样的字符串使用很普遍,Objective-C提供一个快捷方式来根据常量创建  NSString 对象. 要使用这种快捷方式,你必须在普通双引号字符串前加  @ 符号,下面的例子就做了展示:

  1. NSString *myString = @"My String\n";  
  2.    
  3. NSString *anotherString = [NSString stringWithFormat:@"%d %@", 1, @"String"];  
  4.    
  5. // 根据C式字符串创建Objective-C字符趾  
  6.    
  7. NSString *fromCString = [NSString stringWithCString:"A C string" encoding:NSASCIIStringEncoding]; 

协议

一个协议声明的方法可以被任意类实现。协议本身没有类。他们只是简单地定义一个接口让其它对象可靠的实现。当你在你的类里实现一个协议的方法时,就可以说你的类符合那个协议了。

协议被频繁用于为 委拖 对象指定接口。看协议、委托以及其它对象之间的相互作用的最好方式,就是看一个例子。

 UIApplication 类实现一个应用程序要求的行为。不用强迫你实现子类 UIApplication  来接收有当前程序状态的简单通知。而是 UIApplication  类通过调用它分配的委托对象的具体方法来发送那些通知。实现 UIApplicationDelegate 协议方法的对象能接收那些通知,并提供恰当的答复。通过将协议的名称用“<>”包裹起来放到它继承的类后面,来指定你的类遵循或采用的协议。你不用去声明你实现协议的方法。

  1. @interface MyClass : NSObject <UIApplicationDelegate, AnotherProtocol> {  
  2. }  
  3. @end 

协议的声明看起来比较类似一个类的接口,不同的是协议没有父类也不能定义实体变量。下面的例子展示了含有一个方法的简单协议:

  1. @protocol MyProtocol  
  2. - (void)myProtocolMethod;  
  3. @end 

在很多委托协议的示例中,采用一个协议类似实现协议中定义的方法。有些协议要求你明确说明你支持的协议,协议可以指定必选和可选方法。当你要将你的开发推进到更深层次,无论如何,你应该花稍多时间去学习协议及如何使用它们--  “协议” in  Objective-C编程语言.

  1. src="/CuteSoft_Client/CuteEditor/Images/anchor.gif">  

更多信息

上述内容主要是想让你熟悉Objective-C语言的基础。这里介绍的主题覆盖了你通读文档时最可能遇到的语言功能。这些内容不是这门语言的仅有功能,我们鼓励你阅读有关这门语言的更多内

小结:初学者必备文档: Objective-C入门学习的内容介绍完了,希望通过本文的学习能对你你有所帮助!

责任编辑:zhaolei 来源: 互联网
相关推荐

2025-08-05 10:27:52

Objective-C对象

2025-08-05 14:16:47

Objective-C 变量 方法

2025-08-05 19:16:50

Objective-C变量

2025-08-05 19:01:18

Objective-C

2025-08-05 10:50:08

xcode调试文件

2025-08-05 15:45:59

Lua函数

2025-08-05 13:10:46

TensorFlow深度学习数据集

2025-08-05 11:49:05

Objective-C

2025-08-05 14:01:03

LUA

2025-08-05 09:54:05

Lua字符春交互

2025-08-05 17:19:20

Lua源文件

2025-08-05 17:05:01

Lua

2025-08-05 15:58:34

Objective-C

2025-08-05 17:06:01

Objective-CNSLog

2025-08-05 10:38:37

Widget

2025-08-05 17:36:44

MySQL初学者

2025-08-05 14:41:34

Objective-C

2025-08-05 19:03:41

Java代码初学者

2025-08-05 16:44:56

iPhone代理设计模式

2025-08-05 19:05:42

学习C++
点赞
收藏

51CTO技术栈公众号

社保指什么 一个日一个斤念什么 柏拉图之恋是什么意思 凝望什么 新西兰移民需要什么条件
男人气血不足吃什么药 备孕吃什么 药流后可以吃什么水果 心电图逆钟向转位什么意思 fs是什么意思
已归档是什么意思 pro是什么的缩写 医院属于什么性质的单位 总蛋白偏低是什么原因 什么牌子的指甲油好
cpv是什么病毒 乐得什么填词语 什么是人棉 阿托品是什么药 骨折恢复期吃什么好
细胞学检查是什么hcv9jop0ns6r.cn 先天性心脏病有什么症状hcv8jop5ns1r.cn hp是什么牌子的电脑hcv8jop2ns5r.cn 反复发烧是什么原因引起的hcv8jop8ns9r.cn 浑身解数是什么意思clwhiglsz.com
孕妇胃痛可以吃什么药hlguo.com 家有一老如有一宝是什么意思fenrenren.com 慈字五行属什么hcv9jop5ns3r.cn 为什么心里老是想着死hcv7jop9ns9r.cn 菠萝蜜吃多了有什么坏处hcv9jop7ns1r.cn
腿膝盖后面的窝窝疼是什么原因hcv8jop1ns9r.cn cin3是什么意思hcv8jop3ns2r.cn 小便泡沫多是什么原因1949doufunao.com 女人细菌感染什么原因引起的hcv8jop2ns5r.cn 被银环蛇咬了有什么症状hcv9jop3ns8r.cn
用淘米水洗脸有什么好处wuhaiwuya.com 肚子胀痛什么原因hcv9jop3ns5r.cn 白带是什么样子hcv9jop3ns2r.cn 脚心有痣代表什么意思hcv8jop1ns6r.cn 93岁属什么生肖shenchushe.com
百度