alloc 和 init 的理解认识和自定义init方法

alloc 是类方法,只能被类调用,返回的是分配的这个类的实例对象,但是没有初始化,需要调用 init进行初始化。这里的init就是对象方法。

TDWShop *s1=[[TDWShop alloc]init];
这里alloc 返回了TDWShop的实例对象,然后对象调用对象方法init.
以上这一句分解开来等于下面:
    TDWShop *shop1=[TDWShop alloc];
    shop1=[shop1 init]; //这2部等于 TDWShop *shop1=[[TDWShop alloc]init];
    作用等于:
    TDWShop *shop1=[TDWShop new];

执行完alloc后和执行完init后,对象地址都是一样的,初始化的地址在alloc就固定了
在这里插入图片描述

自定义init方法

TDWShop.h


@interface TDWShop : NSObject
@property (strong,nonatomic)NSString *icon;
@property (strong,nonatomic)NSString *title;
+(instancetype)TDWShopWithIcon:(NSString*)icon title:(NSString*)title;//自定义的类方法初始化2个成员变量
-(instancetype)initWithIcon:(NSString*)icon title:(NSString*)title;//自定义的对象方法初始化2个成员变量
@end

TDWShop.m

@implementation TDWShop
+(instancetype)TDWShopWithIcon:(NSString*)icon title:(NSString*)title
{
    TDWShop *shop1=[[self alloc]initWithIcon:icon title:title];
    return shop1 ;
}
-(instancetype)initWithIcon:(NSString*)icon title:(NSString*)title
{
    self = [super init];
    if (self) {
        _icon=icon;
        _title=title;
    }
    return self;
}

int main(int argc, const char * argv[]) {
    TDWShop *s1=[[TDWShop alloc]initWithIcon:@"liantiaobao.png" title:@"链条包"];//这个是执行了NSObject的alloc方法,返回了实例丢向,然后调用自定义的对象方法initWithIcon
    NSLog(@"s1.icon=%@,  s1.title=%@",s1.icon,s1.title);
    
    TDWShop *s2=[TDWShop TDWShopWithIcon:@"danjianbao.png" title:@"单肩包"];//这里直接调用自定义的类方法进行初始化:TDWShopWithIcon
    NSLog(@"s2.icon=%@,  s2.title=%@",s2.icon,s2.title);
    return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值