xcode object-c 笔记

/*
1. IBOutlet   interface builder  为了使用 interface builder 识别
*/
@property (nonatimic, retain) IBOutlet UIImageView *imageview;

/*
2. 载入新的视图view
*/
FlipsideVC *VC = [[FlipsideVC alloc] initWithNibName:@"NIB名字" bundle:nil];
[self.navigationController pushViewController:vc animated:YES];
[vc release];

/*
3.载入网络图片
*/
NSString *imageurl = @"http://****/1.jpg";
NSError *error = nil;
NSURL *url = [NSURL URLWithString:imageurl];
NSData *imageData = [[NSData alloc] initWithContentsOfURL:url options:NSMappedRead error:&error];
UIImage *picimage  = [[UIImage alloc] initWithData:imageData];
[imagedata release];

/*
4.动态添加button,自定义的图片按钮
*/
UIButton *closeButton = [[UIButton alloc] initWithFrame: CGRectMake(278, -30, 60, 60)];

[closeButton setBackgroundColor:[UIColor clearColor]];

[closeButton setImage:[UIImage imageNamed:@"ad_close_x.png"] forState:UIControlStateNormal];

[closeButton addTarget:self action:@selector(OnCloseAdButtonPressed:) 
				forControlEvents:UIControlEventTouchUpInside];

[adView addSubview:closeButton];

/*
5.NSAutoreleasePool  自动释放
*/
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
....
[pool release];


/*
6. NSLog  日志
*/
NSLog(@"aaaaaaaaaaa");

/*
7.  使用NSLocalizedString实现国际化
*/
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSArray *languages = [defaults objectForKey:@"AppleLanguages"]; 
NSLog(@"%@", languages);

/*
8   在Xcode中建立多语言文档
*/

/*
1.在Resources分类下新建文档(右鍵/Add/New File…)
2.在模板对话框中选择Other,然后再选择Strings File
3.将文件保存名设置为Localizable.strings
4.在Localizable.strings 文件上按右键并选择 Get Info
5.点击信息界面的Make File Localizable,然后再将Tab标签切换到General
6.输入新的语言名称 zh 後按 Add,些时有English与zh两种语言,你还可以增加其它语言.

在源代码中使用NSLocalizedString来引用国际化文件

//括号里第一个参数是要显示的内容,与各Localizable.strings中的id对应
//第二个是对第一个参数的注释,一般可以为空串
[_alertView setTitle:NSLocalizedString(@"Submitted successfully",@"")];


四、使用Terminal的genstrings命令进行生成资源文件
打开Terminal,然后cd到工程所在的目录,然后使用genstrings来生成自动从源代码中生成资源文件.
例如,项目的目录为:/user/project/test01,则命令如下:

genstrings -o English.lproj  ./classes/*.m
genstrings -o zh.lproj  ./classes/*.m


五、编辑各Localizable.strings文件
从第四步中得到了与代码对应的资源文件,最后我们需要对这些资源文件翻译成对应的语言就可以了.如在Localizable.strings(zh)中, 把等号后的文字进行编译成中文.

"Submitted successfully" = "提交成功"
重新编译整个工程后,就会在不同的语言环境下得
*/


/*
9.  NSString and NSMutableString
*/
use @"abc" to mean NSString
ex: NSString *str = @"Hello";
use content of file to create NSString
ex: NSString *str = [NSString stringWithContentsOfFile:@"/path/to/file"]
use c characters to create NSString
ex: char *cStr="hello";
NSString *str = [NSString stringWithCString: cStr]
get length of NSString
ex: unsigned int strLen = [str length]
append on NSString to another
ex: NSString *str = @"Hello";
NSString *str2 = [str stringByAppendingString: @"abc"]
append a format:
ex: NSString *str3 = [str2 stringByAppendingFormat: @"%d", 2003]
search for subString:
ex: NSRange loc = [str rangeOfString:@"The"]
what is NSRange:
typedef struct _NSRange{
unsigned int location;
unsigned int length;
}NSRange;
breaking a string into components:
ex: NSArray *fields = [str componentsSeperatedByString:@"abc"];
create NSMutableString from NSString:
ex: NSString *str = @"hello";
NSMutableString *ms = [NSMutableString stringWithString: str]; 

/*
10. NSString+NSMutableString+NSValue+NSAraay用法汇总
*/
	/*----------------创建字符串的方法----------------*/
    //1、创建常量字符串。
    NSString *astring = @"This is a String!";
    //2、创建空字符串,给予赋值。
    NSString *astring = [[NSString alloc] init];
    astring = @"This is a String!";
    NSLog(@"astring:%@",astring);
  [astring release];
    //3、在以上方法中,提升速度:initWithString方法
    NSString *astring = [[NSString alloc] initWithString:@"This is a String!"];
    NSLog(@"astring:%@",astring);
    [astring release];
    //4、用标准c创建字符串:initWithCString方法
    char *Cstring = "This is a String!";
    NSString *astring = [[NSString alloc] initWithCString:Cstring];
    NSLog(@"astring:%@",astring);
    [astring release];
    //5、创建格式化字符串:占位符(由一个%加一个字符组成)
    int i = 1;
    int j = 2;
    NSString *astring = [[NSString alloc] initWithString:[NSString stringWithFormat:@"%d.This is %i string!",i,j]];
    NSLog(@"astring:%@",astring);
    [astring release];
    //6、创建临时字符串
    NSString *astring;
    astring = [NSString stringWithCString:"This is a temporary string"];
    NSLog(@"astring:%@",astring);
    /*----------------从文件读取字符串:initWithContentsOfFile方法 ----------------*/   
    NSString *path = @"astring.text";
    NSString *astring = [[NSString alloc] initWithContentsOfFile:path];
    NSLog(@"astring:%@",astring);
    [astring release];
    /*----------------写字符串到文件:writeToFile方法 ----------------*/   
    NSString *astring = [[NSString alloc] initWithString:@"This is a String!"];
    NSLog(@"astring:%@",astring);
    NSString *path = @"astring.text";   
    [astring writeToFile: path atomically: YES];
    [astring release];   
    /*---------------- 比较两个字符串----------------*/        
    //用C比较:strcmp函数
    char string1[] = "string!";
    char string2[] = "string!";
    if(strcmp(string1, string2) = = 0)
    {
        NSLog(@"1");
    }
    //isEqualToString方法   
    NSString *astring01 = @"This is a String!";
    NSString *astring02 = @"This is a String!";
    BOOL result = [astring01 isEqualToString:astring02];
    NSLog(@"result:%d",result);
    //compare方法(comparer返回的三种值)   
    NSString *astring01 = @"This is a String!";
    NSString *astring02 = @"This is a String!";   
    BOOL result = [astring01 compare:astring02] = = NSOrderedSame;   
    NSLog(@"result:%d",result);   
    //NSOrderedSame 判断两者内容是否相同
    NSString *astring01 = @"This is a String!";
    NSString *astring02 = @"this is a String!";
    BOOL result = [astring01 compare:astring02] = = NSOrderedAscending;   
    NSLog(@"result:%d",result);
    //NSOrderedAscending 判断两对象值的大小(按字母顺序进行比较,astring02大于astring01为真)
    NSString *astring01 = @"this is a String!";
    NSString *astring02 = @"This is a String!";
    BOOL result = [astring01 compare:astring02] = = NSOrderedDescending;   
    NSLog(@"result:%d",result);     
    //NSOrderedDescending 判断两对象值的大小(按字母顺序进行比较,astring02小于astring01为真)
    //不考虑大 小写比较字符串1
    NSString *astring01 = @"this is a String!";
    NSString *astring02 = @"This is a String!";
    BOOL result = [astring01 caseInsensitiveCompare:astring02] = = NSOrderedSame;   
    NSLog(@"result:%d",result);     
    //NSOrderedDescending判断两对象值的大小(按字母顺序进行比较,astring02小于astring01为 真)
    //不考虑大小写比较字符串2
    NSString *astring01 = @"this is a String!";
    NSString *astring02 = @"This is a String!";
    BOOL result = [astring01 compare:astring02
                            options:NSCaseInsensitiveSearch | NSNumericSearch] = = NSOrderedSame;   
    NSLog(@"result:%d",result);     
    //NSCaseInsensitiveSearch:不区分大小写比较 NSLiteralSearch:进行完全比较,区分大小写 NSNumericSearch:比较字符串的字符个数,而不是字符值。
    /*----------------改变字符串的大小写----------------*/   
    NSString *string1 = @"A String";
    NSString *string2 = @"String";
    NSLog(@"string1:%@",[string1 uppercaseString]);//大写
    NSLog(@"string2:%@",[string2 lowercaseString]);//小写
    NSLog(@"string2:%@",[string2 capitalizedString]);//首字母大小
    /*----------------在串中搜索子串 ----------------*/        
    NSString *string1 = @"This is a string";
    NSString *string2 = @"string";
    NSRange range = [string1 rangeOfString:string2];
    int location = range.location;
    int leight = range.length;
    NSString *astring = [[NSString alloc] initWithString:[NSString stringWithFormat:@"Location:%i,Leight:%i",location,leight]];
    NSLog(@"astring:%@",astring);
    [astring release];
    /*----------------抽取子串 ----------------*/        
    //-substringToIndex: 从字符串的开头一直截取到指定的位置,但不包括该位置的字符
    NSString *string1 = @"This is a string";
    NSString *string2 = [string1 substringToIndex:3];
    NSLog(@"string2:%@",string2);
    //-substringFromIndex: 以指定位置开始(包括指定位置的字符),并包括之后的全部字符
    NSString *string1 = @"This is a string";
    NSString *string2 = [string1 substringFromIndex:3];
    NSLog(@"string2:%@",string2);
    //-substringWithRange: //按照所给出的位置,长度,任意地从字符串中截取子串
    NSString *string1 = @"This is a string";
    NSString *string2 = [string1 substringWithRange:NSMakeRange(0, 4)];
    NSLog(@"string2:%@",string2);

/*
11.  随机数的使用
*/

 头文件的引用
        #import <time.h>
        #import <mach/mach_time.h>

        srandom()的使用
        srandom((unsigned)(mach_absolute_time() & 0xFFFFFFFF));

        直接使用 random() 来调用随机数

/*
12  在UIImageView 中旋转图像
*/
float rotateAngle = M_PI;
        CGAffineTransform transform =CGAffineTransformMakeRotation(rotateAngle);
        imageView.transform = transform;

/*
13   在Quartz中如何设置旋转点
*/
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bg.png"]];
imageView.layer.anchorPoint = CGPointMake(0.5, 1.0);
这个是把旋转点设置为底部中间。记住是在QuartzCore.framework中才得到支持

/*
14  创建.plist文件并存储
*/
		NSString *errorDesc;  //用来存放错误信息
        NSMutableDictionary *rootObj = [NSMutableDictionary dictionaryWithCapacity:4]; //NSDictionary, NSData等文件可以直接转化为plist文件
        NSDictionary *innerDict;
        NSString *name;
        Player *player;
        NSInteger saveIndex;
    
        for(int i = 0; i < [playerArray count]; i++) {
              player = nil;
              player = [playerArray objectAtIndex:i];
              if(player == nil)
                     break;
              name = player.playerName;// This "Player1" denotes the player name could also be the computer name
              innerDict = [self getAllNodeInfoToDictionary:player];
              [rootObj setObject:innerDict forKey:name]; // This "Player1" denotes the person who start this game
        }
        player = nil;
        NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:(id)rootObj format:NSPropertyListXMLFormat_v1_0 errorDescription:&errorDesc];

        红色部分可以忽略,只是给rootObj添加一点内容。这个plistData为创建好的plist文件,用其writeToFile方法就可以写成文件。下面是代码:
        
        /*得到移动设备上的文件存放位置*/
        NSString *documentsPath = [self getDocumentsDirectory];
        NSString *savePath = [documentsPath stringByAppendingPathComponent:@"save.plist"];
    
        /*存文件*/
        if (plistData) {
                [plistData writeToFile:savePath atomically:YES];
         }
         else {
                NSLog(errorDesc);
                [errorDesc release];
        }

        - (NSString *)getDocumentsDirectory {  
                NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
                return [paths objectAtIndex:0];  
        } 

/*
15  读取plist文件并转化为NSDictionary
*/		
		NSString *documentsPath = [self getDocumentsDirectory];
        NSString *fullPath = [documentsPath stringByAppendingPathComponent:@"save.plist"];
        NSMutableDictionary* plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:fullPath];
		
/*
16  读取一般性文档文件
*/
		NSString *tmp;
        NSArray *lines; /*将文件转化为一行一行的*/
        lines = [[NSString    stringWithContentsOfFile:@"testFileReadLines.txt"]
                       componentsSeparatedByString:@"\n"];
    
         NSEnumerator *nse = [lines objectEnumerator];
    
         // 读取<>里的内容
         while(tmp = [nse nextObject]) {
                  NSString *stringBetweenBrackets = nil;
                  NSScanner *scanner = [NSScanner scannerWithString:tmp];
                  [scanner scanUpToString:@"<" intoString:nil];
                  [scanner scanString:@"<" intoString:nil];
                  [scanner scanUpToString:@">" intoString:&stringBetweenBrackets];

                  NSLog([stringBetweenBrackets description]);
          }

/*
17  隐藏NavigationBar
*/
[self.navigationController setNavigationBarHidden:YES animated:YES];

/*
18  屏蔽iphone虚拟键盘
*/
- (BOOL) textFieldShouldBeginEditing: (UITextField *)textField

{

return NO;

}

/*
19  让label自适应里面的文字,自动调整宽度和高度的 
*/
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0,0,0,0)];这个frame是初设的,没关系,后面还会重新设置其size。
[label setNumberOfLines:0];
NSString *s = @"string......";
UIFont *font = [UIFont fontWithName:@"Arial" size:12];
CGSize size = CGSizeMake(320,2000);
CGSize labelsize = [s sizeWithFont:font constrainedToSize:size lineBreakMode:UILineBreakModeWordWrap];
[label setFrame:CGRectMake:(0,0, labelsize.width, labelsize.height)];
[self.view addSubView:label];

/*
20  iPhone 应用中实现拨打电话功能的代码
*/
面的代码能在应用中添加一个电话按钮,点击即可拨打电话号码。对于 iPhone 开发者还是很有用的。

//添加电话图标按钮
    UIButton *btnPhone = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
    btnPhone.frame = CGRectMake(280,10,30,30);
    UIImage *image = [UIImage imageNamed:@"phone.png"];    
    [btnPhone setBackgroundImage:image forState:UIControlStateNormal];
    
    //点击拨号按钮直接拨号
    [btnPhone addTarget:self action:@selector(callAction:event:) forControlEvents:UIControlEventTouchUpInside];

    [cell.contentView addSubview:btnPhone];  //cell是一个UITableViewCell

//定义点击拨号按钮时的操作
- (void)callAction:(id)sender event:(id)event{
    NSSet *touches = [event allTouches];
    UITouch *touch = [touches anyObject];
    CGPoint currentTouchPosition = [touch locationInView:self.listTable];
    NSIndexPath *indexPath = [self.listTable indexPathForRowAtPoint: currentTouchPosition];
    if (indexPath == nil) {
        return;
    }
    NSInteger  section = [indexPath section];
    NSUInteger  row = [indexPath row];
    NSDictionary *rowData = [datas objectAtIndex:row];

    NSString *num = [[NSString alloc] initWithFormat:@"tel://%@",number]; //number为号码字符串    
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:num]]; //拨号
}

/*
21  获取网页 HTML 中 <Title>内容的代码
*/
涉及到互联网的 iPhone 应用里往往要抓取网页的<title>内容,您可以用 UIWebView,加载完成后执行 javascript 取得 html 的 title
self.title = [_webView stringByEvaluatingJavaScriptFromString:@"document.title"];


/*
22  NSString中用一个字符替换NSString中某个特别的字符
*/
在NSString中,需要用一个字符代替NSString字符串里面的某个特别的字符,此时使用[NSString stringByReplacingOccurrencesOfString: withString:];

而在string中,需要用一个字符代替string字符串里面的某个特别的字符,此时使用

[string replaceOccurrencesOfString:(NSString *) withString:(NSString *)]
[string replaceOccurrencesOfString:@"A" withString:@"B" options:NSCaseInsensitiveSearch range:NSRange){0,[string length]}];

/*
23  category
*/

category 就是对原有的类进行一个功能扩展,只扩展方法,不能扩展成员变量

/*
24  blocks  函数指针
*/
typedef int (^sumblockT) (int a, int b);
sumblockT  block = ^(int a, int b) {
	return a+b;
}

__block int sum = 0; //使用__block 使其成为全局变量
void (^myblock) (int a, int b) = ^(int a, int b) {
	int c = a + b;
	sum = a + b;
	return c;
};

/*
25 protocal  协议,使用协议进行继承
*/
@protocal aaaa

@end

















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值