ios学习基础篇一

搜集的不错的oc学习资料

大概总结:

http://my.oschina.net/luoguankun/blog/208526

详细教程:

http://www.w3cschool.cc/ios/ios-objective-c.html

ios不同于java平台下的一些细节:

1id:

Objective-C有一种比较特殊的数据类型是id。你可以把它理解为“随便”。

在Objective-C里,一切东西都是指针形式保存,你获取到的就是这个对象在内存的位置。那么id就是你知道这个位置,但是不知道里面是啥的时候的写法。

2、 同一个数组可以保存不同的对象:

比如一个数组NSArray,这种数组里面可以保存各种不同的对象,比如这个数组里:

myArray <—-|

0: (float) 234.33f

1: @”我是个好人”

2: (NSImage *)

3: @”我真的是好人”

这是一个由4个东西组成的数组,这个数组包括一个浮点数,两个字符串和一个图片。

3、BOOL,YES,NO:

你可以认为YES表示C#或者Java里的true,NO表示false。而实际上YES是1,NO是0,BOOL本身就是个char。

4、IBOutlet、IBAction是啥玩意,总能看到。

这两个东西其实在语法中没有太大的作用。如果你希望在Interface Builder中能看到这个控件对象,那么在定义的时候前面加上IBOutlet,在IB里就能看到这个对象的outlet,如果你希望在Interface Builder里控制某个对象执行某些动作,就在方法前面加上(IBAction)。

而这两个东西实际上和void是一样的。

5、nil。

Objective-C里的NULL(空)就这么写,表示空指针。

6、为什么是@”字符串”而不是”字符串”

前面加上@符号,编译器在编译的时候会在程序中给你留出位置,这样才能保证这个字符串不会丢失。反正记住,如果你要想把某些字符串写死在程序里,就要用@”字符串”,如果忘了用@,程序应该会出错。

superzhou大侠指正:

6、为什么是@”字符串”而不是”字符串”

”字符串”是C的字符串,@”"是把C的字符串转成NSString的一个简写.

在需要NSString的地方才需要这个转化,例如NSLog里面.

在需要C string的地方,还是用”字符串”的.

另外,@”"这个转换是不支持中文的.例如NSLog(@”字符串”); 是一定输出不了中文的.

Objective-C 2.0

Objective-C 2.0是Leopard新增加的一门语言,其实和原来的Objective-C是一样的。主要是增加了属性。详细的内容这里不写了,可以参阅Allen Dang的这篇文章,写的很明白。


7:NS****
老乔当年被人挤兑出苹果,自立门户的时候做了个公司叫做NextStep,里面这一整套开发包很是让一些科学家们喜欢,而现在Mac OS用的就是NextStep这一套函数库。

这些开发NextStep的人们比较自恋地把函数库里面所有的类都用NextStep的缩写打头命名,也就是NS****了。比较常见的比如:

◆NSLog

◆NSString

◆NSInteger

◆NSURL

◆NSImage

…
View Code

 object-c:类的定义和实现:

1:先说说类的定义形式
先写一个kids.h文件定义这个类:

@interface Kids: NSObject { 
 
NSString *kidName; 
 
NSString *kidAge; 
 
} 
 
-(BOOL) isCaughtKid:; 
 
@end 


再写一个kids.m文件实现:

#import “kids.h” 
 
@implementation Kids 
 
-(void) init { 
 
kidName=@”mykid”; 
 
kidAge=@”15”; 
 
} 
 
-(BOOL) isCaughtKid:{ 
 
return YES; 
 
} 
 
@end 

注:'-'表示这个函数是实例函数(类似非静态函数),'+'表示这个函数是类函数(类似静态函数)

2:一个方法如何传递多个参数?

一个方法可以包含多个参数(参数用空格隔开),不过后面的参数都要写名字。
多个参数的写法

(方法的数据类型) 函数名: (参数1数据类型) 参数1的数值的名字 参数2的名字: (参数2数据类型

) 参数2值的名字 …. ;

举个例子,一个方法的定义:

-(void) setKids: (NSString *)myOldestKidName secondKid: (NSString *) mySecondOldestKidName thirdKid: (NSString *) myThirdOldestKidName; 
实现这个函数的时候:

-(void) setKids: (NSString *)myOldestKidName secondKid: (NSString *) mySecondOldestKidName thirdKid: (NSString *) myThirdOldestKidName{ 
 
大儿子 = myOldestKidName; 
 
二儿子 = mySecondOldestKidName; 
 
三儿子 = myThirdOldestKidName; 
 
} 
调用的时候:

Kids *myKids = [[Kids alloc] init]; 
 
[myKids setKids: @”张大力” secondKid: @”张二力” thirdKid: @”张小力”];
View Code

 object-c:的一些基本用法

1减号(或者加号)
 减号表示一个函数、或者方法、或者消息的开始,怎么说都行。
 比如c#中,一个方法的写法可能是:
 private voidhello(bool ishello)
 {
 //OOXX
 }
 用Objective-C写出来就是
 -(void) hello:(BOOL)ishello
 {
 //OOXX
  }
 挺好懂的吧?
 不过在Objective-C里面没有public和private的概念,你可以认为全是public。
 而用加号的意思就是其他函数可以直接调用这个类中的这个函数,而不用创建这个类的 实   例。
2 中括号
中括号可以认为是如何调用你刚才写的这个方法,通常在Objective-C里说“消息”。
比如C#里你可以这么写:
this.hello(true);
在Objective-C里,就要写成:
[selfhello:YES];

3、为什么是@”字符串”而不是”字符串”
”字符串”是C的字符串,@”"是把C的字符串转成NSString的一个简写.
在需要NSString的地方才需要这个转化,例如NSLog里面.
在需要C string的地方,还是用”字符串”的.
另外,@”"这个转换是不支持中文的.例如NSLog(@”字符串”); 是一定输出不了中文的.
View Code

 对象初始化:

两种创建新对象的方法:

[类名 new]

[[类名 alloc] init]

这两种方法是等价的,但cocoa的惯例是使用后者。

alloc在为对象分配空间的同时,将这块内存初始化为0;

Init方法:初始化实例变量,使对象处于可用状态。[返回类型为id,  返回的值描述了被初始化的对象]

使用new创建新对象时,系统要完成两个步骤:

    1.       为对象分配内存,即对象获得一个用来存放其实例变量的内存块;

    2.       自动调用init方法,让该对象处于可用状态。

NSLog:

 规则:

        %@ 对象

    %d, %i 整数

        %u 无符整形

        %f 浮点/双字

        %x, %X 二进制整数

        %o 八进制整数

        %zu size_t%p 指针

        %e 浮点/双字 (科学计算)

        %g 浮点/双字

         %s C 字符串

        %.*s Pascal字符串

        %c 字符

        %C unicha

        r%lld 64位长整数

     (long long)%llu 无符64位长整数

        %Lf 64位双字

实例:

  NSLog (@"this is a test");

  NSLog (@"string is :%@", string);

  NSLog (@"x=%d, y=%d", 10, 20);

  但是下面的写法是不行的:

  int i = 12345; 

  NSLog( @"%@", i );

  原因是, %@需要显示对象,而int i明显不是一个对象,要想正确显示,要写成:

  int i = 12345;

  NSLog( @"%d", i );

 NSString *tempA = @"123";

  NSString *tempB = @"456";

1,字符串拼接

 NSString *newString = [NSString stringWithFormat:@"%@%@",tempA,tempB];

2,字符转int

int intString = [newString intValue]; 

3,int转字符

NSString *stringInt = [NSString stringWithFormat:@"%d",intString] 

4,字符转float

 float floatString = [newString floatValue];

5,float转字符

NSString *stringFloat = [NSString stringWithFormat:@"%f",intString];

 

原文地址:https://www.cnblogs.com/yujian-bcq/p/4507427.html