zoukankan      html  css  js  c++  java
  • 初始化,和赋值问题

     1 #import "AddressBook.h"
     2 #import "Person.h"
     3 /*
     4  1.为什么下面使用可变数组的时候可以不用初始化直接定义就可以
     5  2.为什么要用不可变数组接受返回值
     6  3.self的用法,在方法里为什么不能代替_addressBook,而用self.addressBook却可以
     7  4.什么时候用NSArray接收 ,什么时候又用不可变数组接收
     8  */
     9 
    10 @implementation AddressBook
    11 //重写初始化方法
    12 -(instancetype)init
    13 {
    14     self = [super init];
    15     if (self) {
    16         _addressbook = [NSMutableDictionary dictionary];
    17         }
    18     return self;
    19 }

    1.我们重写init方法是因为如果用系统默认的init方法,在主函数里调用init的时候会调用父类的init,但是我们要为自己定义的实例变量进行一定的初始化操作,也就是说我们自己定义的类至少要有一个初始化方法,无论是自定义的还是重写系统初始化方法

     1     if (aPerson.name.length == 0 || aPerson.phone.length == 0) {
     2         NSLog(@"您所添加的联系人姓名和电话不能为空");
     3         return NO;
     4     }else{
     5         
     6         if([[_addressbook allKeys] containsObject:aPerson.groupName]){
     7         NSMutableArray *parr = [_addressbook objectForKey:aPerson.groupName];
     8         for (Person *p in parr) {
     9             if ([p.name isEqualToString:aPerson.name]) {
    10                 NSLog(@"联系人重复");
    11                 return NO;
    12             }
    13         }
    14         [parr addObject:aPerson];
    15             return YES;
    16         }
    17         NSMutableArray *grop = [NSMutableArray new];
    18         [grop addObject:aPerson];
    19         [_addressbook setObject:grop forKey:aPerson.groupName];
    20         
    21     }
    22 
    23     return NO;

    2.上边的代码中,可变数组parr 和 grop 代表了两种不同的操作方式,数组名存放的是地址空间,parr存放的是字典中键值对的地址空间,所以不需要初始化,而grop 没有指向任何地址空间,所以需要初始化一下

         我们平时在赋值过程中一定要注意是复制了地址,还是重新开辟了空间复制了值,前者可以改变原来空间里的值,而后者则不能

  • 相关阅读:
    详解Java API之正则表达式
    ios UIWindow 错误使用导致无法接收motionEnded(摇一摇)函数
    ios NSTimer的强引用问题
    ionic 接触的第一个Hybrid项目
    iOS 小经验:UIAnimation空对象导致crash
    iOS GCD 必读推荐,有关于单例使用问题
    ios NSString 转 float的注意
    iOS UIViewController 和 nib 相关的3个方法
    ios delegate 使用注意 assign,weak
    ios 使用autolayout 后button 的frame 无法设置问题!
  • 原文地址:https://www.cnblogs.com/DevinSMR/p/5146913.html
Copyright © 2011-2022 走看看