黑马程序员技术交流社区

标题: OC 请问什么是便利构造器(快速构造器)? [打印本页]

作者: Hi围城    时间: 2014-4-2 15:37
标题: OC 请问什么是便利构造器(快速构造器)?
本帖最后由 Hi围城 于 2014-4-2 17:27 编辑

如题,mj的基础视频里没有提过。
作者: cnchenys    时间: 2014-4-2 16:09
本帖最后由 cnchenys 于 2014-4-2 21:40 编辑

类似于Java中的构造方法,
指的是在init的时候,同时给属性变量赋值的方法

比如
@interface Person : NSObject
{
    int _age;
    NSString *_name;
}
- (Person *)initWithAge: (int)age andWithName: (NSString *)name;
+ (Person *)initWithAge: (int)age andWithName: (NSString *)name;//这个类方法在返回Person对象时,就可以给_age和_name赋值,这个就是便利构造器
@end

@implementation Person
- (Person *)initWithAge: (int)age andWithName: (NSString *)name
{
    _age = age;
    _name = name;
}
+ (Person *)initWithAge: (int)age andWithName: (NSString *)name
{
    return [[Person alloc] initWithAge:age andWithName:name];
}
@end


int main()
{
    Person *p  = [Person initWithAge: 10 andWithName: @"jason"];// 在init时就赋值了age和name属性

    return 0;
}




作者: agelessman    时间: 2014-4-2 16:11
1、便利构造器是一种快速创建对象的方式。它本质上是把初始化方法做了一次封装,方便外界使用

      2、便利构造器是一个类方法(以+开头)

      C:\Users\Administrator\Desktop

20130912114602_622.jpg (13.56 KB, 下载次数: 189)

20130912114602_622.jpg

作者: Hi围城    时间: 2014-4-2 17:27
cnchenys 发表于 2014-4-2 16:09
类似于Java中的构造方法,
指的是在init的时候,同时给属性变量赋值的类方法

非常感谢!
作者: Hi围城    时间: 2014-4-2 17:43
cnchenys 发表于 2014-4-2 16:09
类似于Java中的构造方法,
指的是在init的时候,同时给属性变量赋值的类方法

可是内方法不是不能访问成员变量么?
作者: cnchenys    时间: 2014-4-2 21:31
本帖最后由 cnchenys 于 2014-4-2 21:41 编辑
Hi围城 发表于 2014-4-2 17:43
可是内方法不是不能访问成员变量么?

通过对象方法调用
作者: 池莉娘子    时间: 2015-7-9 18:01
Hi围城 发表于 2014-4-2 17:43
可是内方法不是不能访问成员变量么?

为什么不能访问
作者: 984326157    时间: 2015-7-12 01:00
遇到了同样的问题,呵呵
作者: woxingwosu    时间: 2015-8-24 23:41
学习了           
作者: 钱伟    时间: 2015-9-17 22:49
学习了 赞一个




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2