Environment: XCode 6.2
LastUpdate: kagula@2015-4-7
caller
void testContainers()
{
//NSMutableArray equivalent vector/list in c++
{
MyNSItem *item1 = [[MyNSItem alloc] init];
item1.myname = @"first";
item1._value = 1;//access propery
item1->nValue = 100;//access member variable
//member varialble only can be used in the current inherit level object and interior.
MyNSItem *item2 = [[MyNSItem alloc] init];
item2.myname = @"second";
item2._value = 2;
item2->nValue = 200;
MyNSItem *item3 = [[MyNSItem alloc] init];
item3.myname = @"third";
item3._value = 3;
item3->nValue = 300;
//print
//if you do not want modify array, should be use NSArray instead.
//NSMutableArray derived from NSArray interface.
NSMutableArray* array = [NSMutableArray arrayWithObjects:item1,item2,item3, nil];
NSEnumerator* enumerator = [array objectEnumerator];
id anObject = [enumerator nextObject];
while (anObject!=nil) {
MyNSItem *item = (MyNSItem*)anObject;
NSLog(@"%@ %d %d",item.myname,item._value,item->nValue);
anObject = [enumerator nextObject];
}
//modify the specified index element.
((MyNSItem*)array[0])._value = 11;
NSLog(@"After modify %d",((MyNSItem*)array[0])._value);
//assign element
array[0] = array[2];
//array[0] = [[MyNSItem alloc]init];
NSLog(@"After modify %d",((MyNSItem*)array[0])._value);
//add element and output array size.
[array addObject:[[MyNSItem alloc]init]];
((MyNSItem*)array[3])._value = 4;
NSLog(@"After modify %d array.count=%ld",((MyNSItem*)array[3])._value, array.count);
//remove element and output array size.
[array removeObjectAtIndex:0];
NSLog(@"After modify array.count=%ld",array.count);
}
//NSMutableDictionary equivalent std::map in c++ language
{
//you can use NSDictionary if you do not modify after create.
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"MyFirstValue",@"FirstKey",@"MySecondValue",@"SecondKey", nil];
NSLog(@"dict.count = %ld",dict.count);
//add a element
dict[@"MyNewKey"]=@"MyNewValue";
NSLog(@"dict.count = %ld",dict.count);
//iterate key
NSEnumerator* enumeratorKey = [dict keyEnumerator];
for (NSObject *obj in enumeratorKey) {
NSLog(@"key = %@ %@",obj,dict[obj]);
}
//iterate name
NSEnumerator* enumeratorV = [dict objectEnumerator];
for (NSObject *obj in enumeratorV) {
NSLog(@"value = %@",obj);
}
//find key if exist
NSObject* object = [dict objectForKey:@"FirstKey"];
if (object!=nil) {
//get value by key
NSLog(@"Get Value by key %@ %@",dict[@"FirstKey"],object);
}
//remove a element
[dict removeObjectForKey:@"FirstKey"];
NSLog(@"dict.count = %ld",dict.count);
}
//NSMutableSet equivalent std::set in C++.
{
NSMutableSet *set = [[NSMutableSet alloc] initWithObjects:@"one",@"two",@"three",nil];
NSLog(@"set size = %ld",set.count);
//if the element exist?
BOOL bExist = [set containsObject:@"one"];
NSLog(@"bExist=%@",bExist?@"true":@"false");
//remove the element.
[set removeObject:@"one"];
bExist = [set containsObject:@"one"];
NSLog(@"bExist=%@",bExist?@"true":@"false");
//add the element
[set addObject:@"one"];
bExist = [set containsObject:@"one"];
NSLog(@"bExist=%@",bExist?@"true":@"false");
}
}Ancestor.h
//
// Ancestor.h
// example
//
// Created by junli on 15/4/7.
// Copyright (c) 2015年 junli. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Ancestor : NSObject
{
@public
// int _value;
}
@property NSString *myname;
@property int _value;
-(void)live;
@end
Ancestor.m
#import "Ancestor.h"
@implementation Ancestor
-(void)live
{
NSLog(@"Ancestor is living inside!");
}
@endMyNSItem.h
//
// MyNSItem.h
// example
//
// Created by junli on 15/4/7.
// Copyright (c) 2015年 junli. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Ancestor.h"
@interface MyNSItem : Ancestor
{
@public
int nValue;
}
@end
MyNSItem.m
#import "MyNSItem.h"
@implementation MyNSItem
-(id)init
{
if (self=[super init]) {
super.myname = @"";//only property can be access in the derived interface.
super._value = 0;//for can not directly access parent's member variable.
nValue = 0;
}
return self;//self like this notation in c++.
}
@end
本文探讨了Objective-C与Swift两种编程语言在iOS开发领域的应用与区别,包括其核心特性、优缺点及实际案例分析。
1228

被折叠的 条评论
为什么被折叠?



