黑马程序员技术交流社区
标题:
关于init初始化问题
[打印本页]
作者:
桑托尔
时间:
2014-4-28 15:36
标题:
关于init初始化问题
本帖最后由 桑托尔 于 2014-4-30 09:39 编辑
关于init初始化问题,如果想在学生这个类里面重写init,让每个新建出来的学生类初始化的age都是10,可以有如下代码
//在学生类的.m文件中
-(id)init
{
if ( self = [super init] )
{
_age = 10;
}
return self;
}
复制代码
那么如果我想初始化学号 _no呢,同时希望每调用一次init,都会令学号 +=1,应该怎么做到不想用initWithNo这种,就是想在init运行中,每次自动加1赋值给新的no成员变量
作者:
一只小菜鸟
时间:
2014-4-28 15:59
-(id)init
{
static int age = 0; //对象销毁时,值不会改变。
if ( self = [super init] )
{
age++;
_age = age;
}
return self;
}
复制代码
int main(int argc, const char * argv[])
{
Student *stu1 = [[Student alloc] init];
Student *stu2 = [[Student alloc] init];
Student *stu3 = [[Student alloc] init];
NSLog(@"age %i", stu1.no); //age 1
NSLog(@"age %i", stu3.no); //age 3 初始化一次 年龄增加一次
return 0;
}
复制代码
作者:
脸皮猴
时间:
2014-4-28 16:02
-(id)init
{
static int number = 0;
if ( self = [super init] )
{
_age = 10;
_number = ++number;
}
return self;
}
复制代码
希望有更好的方法能实现,我是用一个静态变量来实现的。
作者:
sabjiang
时间:
2014-4-28 16:38
每次实例化对象,都重新赋值的成员,基本上就是静态成员了吧,就像上面两位兄弟写的一样。或者可以试试判断当前Student对象的个数,根据已存在的对象个数来给no成员赋值
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2