黑马程序员---Object-C和Swift对象初始化
来源:互联网 发布:快手制作视频软件 编辑:程序博客网 时间:2024/06/05 20:42
NSString *emptyString =[[NSString alloc ] init];//返回一个空字符串
Object-C初始化方法分配对象分配是伊恩新对象诞生的过程。此操作是从OS获得一块内存将其指定为存放对象的实例变量的位置。alloc方法孙便还将这块内存区域全部初始化为0;所有的BOOL类型初始化为NO;所有的int类型变量被初始化为0;所有的float类型变量被初始化微0.0;所有指针被初始化为nil.
初始化对象与分配相对应的操作是初始化。初始化(initialization)从操作系统取得一块内存,准备用于存储对象。init方法返回他们正在初始化的对象。如:Car *car=[[Car alloc ] init];
便利初始化函数许多类包含便利初始化函数,用来完成某些额外的工作的初始化方法,无需自己来完成这些麻烦的工作。如:
NSString *emptyString =[[NSString alloc ] init];//返回一个空字符串
Object-C初始化方法
<span style="font-size:14px;">-(id )init;//初始化一个空字符串</span>
NSString *emptyString=[[NSString alloc] init];//返回一个空字符串
-(id) initWithFormat:(NSString *)format,…… //stringWithFormat:接受格式化的字符串并输出格式化的结果一样,次本本初始化一个新的字符串作为格式化操作的结果。
string = [[NSString alloc]
initWithFormat:@"%d or %d",25,624];//返回一个字符串
子类化问题初始化函数规则- 不需要自己创建初始化函数,如果不需要设置任何状态,或者只需要alloc 方法将内存清零的默认行为,则不需要担心init.
- 如果够早了一个初始化函数,则一定要在你自己的制定初始化函数中调用超类的指定初始函数。
- 如果初始化不止一个,则要选择一个作为指定初始化函数。被选定的方法应该调用超类的指定初始化函数。要按照指定初始化函数的形式实现其他初始化函数。
Swift初始化方法Swift 的构造器无需返回值,它们的主要任务是保证新实例在第一次使用前完成正确的初始化,Swift 的类并不会默认继承其父类的初始化器。但是也有例外。
初始化规则:规则一:如果你的子类没有定义任何指定初始化器,则其会自动继承其父类的所有指定初始化器
规则二:如果你的子类实现了其父类的所有指定初始化器,不管是自定义的实现还是因为规则一造成的实现,该子类自动继承其父类所有的便利初始化器。
示例如下:
//Objective-CUILabel *label = [UILabel alloc] init];UITableView *myTableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
//Swiftlet label: UILabel = UILabel()let myTableView: UITableView = UITableView(frame: CGRectZero, style: .Grouped)
- 不需要自己创建初始化函数,如果不需要设置任何状态,或者只需要alloc 方法将内存清零的默认行为,则不需要担心init.
- 如果够早了一个初始化函数,则一定要在你自己的制定初始化函数中调用超类的指定初始函数。
- 如果初始化不止一个,则要选择一个作为指定初始化函数。被选定的方法应该调用超类的指定初始化函数。要按照指定初始化函数的形式实现其他初始化函数。
规则一:如果你的子类没有定义任何指定初始化器,则其会自动继承其父类的所有指定初始化器
规则二:如果你的子类实现了其父类的所有指定初始化器,不管是自定义的实现还是因为规则一造成的实现,该子类自动继承其父类所有的便利初始化器。
示例如下:
//Objective-CUILabel *label = [UILabel alloc] init];UITableView *myTableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
//Swiftlet label: UILabel = UILabel()let myTableView: UITableView = UITableView(frame: CGRectZero, style: .Grouped)
0 0
- 黑马程序员---Object-C和Swift对象初始化
- 黑马程序员--Object-C和Swift内存管理机制
- 黑马程序员--Object-C 对象的特性
- OBJECT-C 对象初始化
- Object-C 对象初始化
- 黑马程序员-Object C之单个对象和多个对象的内存管理
- 黑马程序员-Object-C语言中创建类和对象的知识整理
- 黑马程序员-Object-C封装,和对象.类方法,self关键字的用法总结
- 黑马程序员------object-c面向对象_继承
- Object-c中对象初始化
- 黑马程序员----对象初始化 SEL
- 黑马程序员——面向对象-Object类和包
- 黑马程序员--Object-C 类别
- 黑马程序员--Object- C简介
- 黑马程序员---Objective-C 类和对象
- 黑马程序员------[Objective-C]类和对象
- 黑马程序员-Object C之copy和mutableCopy语法(二)
- 黑马程序员--Object-C--01-类和方法
- SVN提交问题 You must use a JIRA no. as
- 网页媒体播放利器 - JW Player使用心得
- HashMap Hashtable区别
- Ueditor(百度编辑器)的使用
- icmp错误分类
- 黑马程序员---Object-C和Swift对象初始化
- 程序猿(新员工) 从"合格"到"优秀",成长之路,还有老员工对新员工的帮带方法
- iOS 的tabelView 重用机制 缓存池
- Leetcode-Insertion Sort List
- Android开发学习 之 五、基本界面控件
- 静态方法使用
- 生成索引信息及索引创建脚本
- javascript 的错误隔离
- apns -> 注册推送功能时发生错误, 错误信息: Error Domain=NSCocoaErrorDomain Code=3000 "未找到应用程序的“aps-environment”的授权字