iPhone应用学习笔记之对象初始化

移动开发 iOS
iPhone学习笔记中对象的初始化是本文要介绍的内容,主要是来学习一下对象初始化的内容,来看详细内容。为方便学习,附有代码!

iPhone应用学习笔记中对象的初始化是本文要介绍的内容,主要是来学习一下对象初始化的内容,来看详细内容。为方便学习,附有代码!

1、关于  self = [super init]

最先运行的代码是[super init],其作用是使超类完成它们自己的初始化工作。从根类NSObject继承的类调用超类的初始化方法,可以使NSObject执行所需的任何操作,以便对象能够响应消息并处理保留计数器。而从其他类继承的类调用超类的初始化方法,可以使子类有机会实现自己全新的初始化。

实例变量所在的内存位置到隐藏的self参数之间的距离是固定的,如果从init方法返回一个新对象,而需要更新self,以便其后的任何实例变量的引用可以呗映射到正确的内存位置,这也是我们需要使用self = [super init]这种形式进行赋值的原因。

这个赋值操作值影响给init方法中self的值,而不影响该方法范围以外的任何内容。

2、有关便利初始化函数

许多类包含便利初始化函数,他们用来完成某些额外工作的初始化方法。

NSString类:

  1. -(id) init; 

以上方法初始化一个新的空字符串,对于不可变的NSString类来说,这个方法没有多大用处。但是,你可以分配和初始化一个新的NSMutableString类的对象并开始向该对象中保存字符,你可以使用下面这样使用此对象:

  1. NSString *emptyString = [[NSString alloc] init]; 

上面的代码返回一个空字符串

当然,你也可以接受格式化的字符串并输出格式化的结果一样。

  1. string  = [[NSString alloc] initWithFormat:@"%d or %d", 25, 624]; 

上面的代码返回一个字符串,其值为“25 or 624”;

更强大的是,你可以打开指定路径上的文本文件,读取文件内容太,并使用文件内容初始化一个字符串。

  1. string  = [[NSString alloc] initWithContentsOfFile: @"words.txt"]; 

创建NSMutableArray数组,有一个很简便的方法replaceObjectAtIndex:withObject,该方法最适合用来实现setTire:atIndex.

要使用replaceObjectAtIndex:withObject:方法,在指定的索引位置必须存在一个能够被替代的对象。

新的NSMutableArray数组不包含任何内容,因此需要使用一些对象作为占位符,NSNull类的对象非常适合完成此项工作,因此,我们在数组中添加4个NSNull对象

附上Tire.m的代码:

  1. #import "Tire.h"  
  2. @implementation Tire  
  3. - (id) init  
  4. {  
  5. if (self = [self initWithPressure: 34  
  6. treadDepth: 20]) {  
  7. }  
  8. return (self);  
  9. } // init  
  10. - (id) initWithPressure: (float) p  
  11. {  
  12. if (self = [self initWithPressure: p  
  13. treadDepth: 20.0]) {  
  14. }  
  15. return (self);  
  16. } // initWithPressure  
  17. - (id) initWithTreadDepth: (float) td  
  18. {  
  19. if (self = [self initWithPressure: 34.0  
  20. treadDepth: td]) {  
  21. }  
  22. return (self);  
  23. } // initWithTreadDepth  
  24. - (id) initWithPressure: (float) p  
  25. treadDepth: (float) td  
  26. {  
  27. if (self = [super init]) {  
  28. ppressure = p;  
  29. treadDepth = td;  
  30. }  
  31. return (self);  
  32. } // initWithPressure:treadDepth:  
  33. - (void) setPressure: (float) p  
  34. {  
  35. ppressure = p;  
  36. } // setPressure  
  37. - (float) pressure  
  38. {  
  39. return (pressure);  
  40. } // pressure  
  41. - (void) setTreadDepth: (float) td  
  42. {  
  43. treadDepth = td;  
  44. } // setTreadDepth  
  45. - (float) treadDepth  
  46. {  
  47. return (treadDepth);  
  48. } // treadDepth  
  49. - (NSString *) description  
  50. {  
  51. NSString *desc;  
  52. desc = [NSString stringWithFormat:  
  53. @"Tire: Pressure: %.1f TreadDepth: %.1f",  
  54. pressure, treadDepth];  
  55. return (desc);  
  56. } // description  
  57. @end // Tire 

小结:iPhone应用学习笔记之对象初始化的内容介绍完了,希望本文对你有所帮助!

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

2011-08-02 15:47:28

Cocos2D Animation

2009-12-16 14:04:04

Ruby对象初始化

2009-07-31 17:51:27

C#对象初始化

2011-06-17 15:29:44

C#对象初始化器集合初始化器

2011-08-09 17:29:29

iPhone文件屏幕

2012-05-23 12:46:53

JavaJava类

2009-08-27 10:31:39

C#对象初始化器

2009-08-14 17:52:27

C#对象初始化

2011-08-08 14:57:46

iPhone Autoreleas Property

2009-11-18 17:53:18

PHP数组初始化

2011-07-07 15:13:42

PHP

2009-08-26 15:28:52

C#对象集合初始化器

2012-02-28 10:04:09

Java

2023-11-12 23:08:17

C++初始化

2011-08-11 17:15:54

iPhone归档

2009-08-12 17:43:54

双括弧Java语法技巧

2011-08-16 14:54:12

iphone开发APP

2023-11-29 08:49:31

Vue.jsData 函数

2012-12-28 14:53:34

Android开发初始化窗体事件

2011-03-08 16:30:24

Proftpd
点赞
收藏

51CTO技术栈公众号