objective-c learning note(1)
阿新 • • 發佈:2018-12-17
(1)create class’s object and initialize property
create a project
in projectname.m:
#import <Foundation/Foundation.h> #import "song.h" int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; // insert code here... NSLog(@"Hello, World!"); song *s1=[[song alloc] initwithname:@"two tiggers" get_artist:@"libai" get_price:20]; song *s2=[[song alloc] initwithartist:@"wangwei" get_name:@"three pigs" get_price:30]; song *s3=[[song alloc] initwithprice:40]; NSLog(@"s1:%@",s1); NSLog(@"s2:%@",s2); NSLog(@"s3:%@",s3); [s1 release]; [s2 release]; [s3 release]; [pool drain]; return 0; }
create a song class
statement in song.h:
#import <Cocoa/Cocoa.h> @interface song : NSObject { NSString *name; NSString *artist; int price; } -(NSString *)get_name; -(NSString *)get_artist; -(int)get_price; -(void)set_name:(NSString *)newname; -(void)set_artist:(NSString *)newartist; -(void)set_price:(int)newprice; -(id)initwithname:(NSString *)newname get_artist:(NSString *)newartist get_price:(int)newprice; -(id)initwithartist:(NSString *)newartist get_name:(NSString *)newname get_price:(int)newprice; -(id)initwithprice:(int)newprice;
implementation in song.m:
#import "song.h" @implementation song //song get and set property's api -(NSString*)get_name { return name; } -(NSString *)get_artist { return artist; } -(int)get_price { return price; } -(void )set_name:(NSString*)newname { [newname retain]; [name release]; name=newname; } -(void )set_artist:(NSString*)newartist { [newartist retain]; [artist release]; artist=newartist; } -(void)set_price:(int)newprice { price=newprice; } //rewrite father api -(id)init { return [self initwithname:nil get_artist:nil get_price:0]; } -(NSString *)description { return [[self get_name] stringByAppendingString:[self get_artist]]; } -(void)dealloc { NSLog(@"dealloc %@",self); [name release]; [artist release]; [super dealloc]; } //write my api -(id)initwithname:(NSString*)newname get_artist:(NSString *)newartist get_price:(int)newprice { [super init]; [self set_name:newname]; [self set_artist:newartist]; [self set_price:newprice]; return self; } -(id)initwithartist:(NSString *)newartist get_name:(NSString *)newname get_price:(int)newprice { [super init]; [self set_name:newname]; [self set_artist:newartist]; [self set_price:newprice]; return self; } -(id)initwithprice:(int)newprice { [super init]; [self set_price:newprice]; return self; } @end
(2)use string
NSString * [email protected]"one two three,oh oh oh yes";
NSRange range=[string1 rangeOfString:@","];
printf("comma location:%i\n", range.location);
printf("location length:%i\n", range.length);
NSString * head=[string1 substringToIndex:range.location];
NSString * tail=[string1 substringFromIndex:range.location + range.length];
printf("head:%s\n",[head UTF8String]);
printf("tail:%s\n",[tail UTF8String]);
NSMutableString*string2=[[NSMutableString alloc] init];
[string2 appendString:@"add string2"];
printf("append string2:%s\n",[string2 UTF8String]);
[string2 replaceCharactersInRange:[string2 rangeOfString:@"add"] withString:@"replace"];
printf("replace string2:%s\n",[string2 UTF8String]);
NSRange range2=[string2 rangeOfString:@"ing"];
[string2 deleteCharactersInRange:(NSRange)range2];
printf("delete string2:%s\n",[string2 UTF8String]);
[string2 insertString:@"ong" atIndex:range2.location];
printf("insert string2:%s\n",[string2 UTF8String]);
[string2 release];
(3)get filename
NSString * filename [email protected]"~/Documents/se0864/10-25/get_filename/get_file/get_file.m";
//NSString * filename [email protected]"/Users/se0030a/Documents/se0864/10-25/get_filename/get_file/get_file.m";
filename=[filename stringByStandardizingPath];
printf("standard path:%s\n",[filename UTF8String]);
NSString * source=[NSString stringWithContentsOfFile:filename];
printf("file content:%s\n",[source UTF8String]);
(4)load a string into a array
NSString * string = @"I am find Thank you";
NSArray * array = [string componentsSeparatedByString:@" "];
int count = [array count];
int i;
for(i=0;i<count;i++)
{
printf("%i:%s\n",i,[[array objectAtIndex:i] UTF8String]);
}
[string writeToFile:@"/Users/se0030a/Documents/se0864/10-25/1.txt" atomically:1];
printf("%i\n",[array containsObject:@"find"]);
printf("%i\n",[array containsObject:@"fond"]);
mutable array:
NSMutableArray * array = [[NSMutableArray alloc] init];
[array addObject:@"b"]; //b
[array addObject:@"black"]; //black
[array addObject:@"crow and kid"]; //"crow and kid"
[array addObject:@"play waterball"]; //"play waterball"
printf("%s\n",[[array description] UTF8String]);
[array insertObject:@"very" atIndex:[array indexOfObject:@"black"]];
printf("%s\n",[[array description] UTF8String]);
[array removeObjectAtIndex:1];
printf("%s\n",[[array description] UTF8String]);
[array removeObject:@"black"];
printf("%s\n",[[array description] UTF8String]);
[array removeObject:@"blue"];
printf("%s\n",[[array description] UTF8String]);
[array release];
(5)address book
#import <Foundation/Foundation.h>
#import <AddressBook/AddressBook.h>
int main (int argc, const char * argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
ABAddressBook * book = [ABAddressBook sharedAddressBook];//get a addressbook for user
NSArray * people = [book people];//get a array which contains all people in book
int count = [people count];
int i;
for(i=0;i<count;i++)
{
ABPerson * person = [people objectAtIndex:i];//get a object on book array
NSString * firstname = [person valueForProperty:@"First"];
NSString * lastname = [person valueForProperty:@"Last"];
printf("%s %s\n",[lastname UTF8String],[firstname UTF8String]);
}
[pool drain];
return 0;
}
(6)dictionaries
//using dictionaries
NSArray * keys = [@"one two three four five" componentsSeparatedByString:@" "];
NSArray * values = [@"aaa,bbb,ccc,ddd,eee" componentsSeparatedByString:@","];
NSDictionary * dict = [[NSDictionary alloc] initWithObjects:values
forKeys:keys];
printf("%s\n",[[dict description] UTF8String]);
//using mutable dictionaries
NSArray * keys2 = [@"one two three four five" componentsSeparatedByString:@" "];
NSArray * values2 = [@"a,b,c,d,e" componentsSeparatedByString:@","];
NSMutableDictionary * dict2 = [[NSMutableDictionary alloc] initWithObjects:values2
forKeys:keys2];
printf("%s\n",[[dict2 description] UTF8String]);
[dict2 setObject:@"e" forKey:@"four"];
[dict2 setObject:@"f" forKey:@"six"];
[dict2 removeObjectForKey:@"one"];
printf("%s\n",[[dict2 description] UTF8String]);