Object-C基本的数据类型介绍

  • Mutable Versus Immutable

        可变和不可变类型区别:

        在ios中例如字典和array都会分成可变与不可变两种,可变的会再之后自动扩展size,例如可变的array可以添加新的元素,来扩展array的size大小。但是不可变的可以更好的控制内存,使代码效率更高。

        !!!!不可变的赋值问题,是否不可变的在alloc的时候就必须进行赋值,记忆中答案是只需要定义array大小就可以,有待验证。

  • NSInteger and NSUInteger

        两者的区别在于NSUInteger是Unsign的,也就是说U是unsign的缩写,unsign的数字都是没有符号的,不会区分正负,使用时需要注意。 ===>拓展Unsign的缩写为U代表这个变量类型没有符号。

  • CGFloat

        浮点类型

  • NSString

        String类型

  • NSNumber

        将数字按照对象进行存储

  • id

        一种特殊的数据类型,可以化身为各种类型。

        有了id,用户在调用一个对象的方法时,就可以不必知道这个对象具体是什么类型。

//ClassA.h
#import <Foundation/NSObject.h>
@interface ClassA: NSObject 
    -(void) print;
@end
//ClassB.h
#import <Foundation/NSObject.h>
@interface ClassB: NSObject 
    -(void) print;
@end
//main.m
#import <stdio.h>
#import "ClassA.h"
#import "ClassB.h"
int main( int argc, const char *argv[] ) {
    // create  instance
    ClassA *a = [[ClassA alloc] init];
    ClassB *b = [[ClassB alloc] init];
    id number;
    // print a
    number = a;
    [number print];
    printf( "\n" );    
    // print b
    number = b;
    [number print];
    printf( "\n" );
}
The output is: 
this is ClassA
this is ClassB


  • NSDictionary and NSMutableDictionary

        hashtable,key和value的样式,和map的使用感觉差不多。

  • NSArray and NSMutableArray

        和list的感觉差不多就是数组。

  • NSSet, NSMutableSet, NSOrderedSet, NSMutableOrderedSet

        和NSArray类似,但是本系列变量只能存储不重复的数据,而NSArray可以存储重复数据。Order的是对顺序的要求,保持和录入的顺序一致,否则录入后乱序。

NSSet *setOfNumbers = [NSSet setWithArray:@[@3, @4, @1, @5, @10]];
NSLog(@"Set of numbers = %@", setOfNumbers);

The output is: 
Set of numbers = {(
    5,
    10,
    3,
    4,
    1
)}
NSOrderedSet *setOfNumbers = [NSOrderedSet orderedSetWithArray :@[@3, @4, @1, @5, @10]]; 
NSLog(@"Ordered set of numbers = %@", setOfNumbers);
The output is: 
Ordered set of numbers = {(
    3,
    4,
    1,
    5,
    10
)}

  • NSCountedSet

        NSCountedSet用于保存对象,同时集成Set的特性,使得保存的对象不重复,但是可以计算其中某个重复的对象被加入了多少次。

        NSCountedSet是可变的,而不是固定的。

NSCountedSet *setOfNumbers = [NSCountedSet setWithObjects: @10, @20, @10, @10, @30, nil]; 
[setOfNumbers addObject:@20]; 
[setOfNumbers removeObject:@10]; 
NSLog(@"Count for object @10 = %lu", (unsigned long)[setOfNumbers countForObject:@10]); 
NSLog(@"Count for object @20 = %lu", (unsigned long)[setOfNumbers countForObject:@20]);

The output is:
Count for object @10 = 2
Count for object @20 = 2

  • NSData and NSMutableData

        主要应用内存中的数据和文件等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值