objective-c 笔记
花了近一周的时间看了objective-c的主要语法,
都说其语法貌似天书,加上中文教程少,所以学习起来的确有困难。网上有斯坦福2011秋的公开课,
不过新手会看得一头雾水,强烈推荐lynda.com的《iOS SDK Essential Training》和《objective-c Essential Training》。
我看斯坦福的教程摸索了五六天,可回头看这个教程一天就豁然开朗了。
一、指针
int myInter = 5; NSString *myString = @"Hello,world!"; //指针引用
二、调用 方法 和 消息
类似于C#中的
myObj.someMethod(); myObj.someMethod(arg);
在这里用
[myObj someMethod]; [myObj someMethod:arg];
调用多个参数很人性化,比如
myObj.insert("Hello",11221);
在这里用
[myObj insertString:@"hello" atIndex:11221];
看一个内置的类,通常有很多方法,用这种结构调用起来一目了然
[NSBitmapImageRep
pixelsWidth:
pixelsHeight:
hasAlpha:
...
]
方法同样是可以嵌套的
[myObj someMethod[otherObj[otherMethod]];
三、创建对象
创建一个对象分两部分:
NSDate *myDate = [NSDate alloc];
myDate = [myDate init];
合并起来就是
NSDate *myDate =[[NSDate alloc] init];
这里还可以用new简化。
四、ARC (Automatic Reference Counting)
使用后就不需要自己进行内存管理了
MyClass *myObj =[MyClass alloc] init]; [myObj someMethode]; //[myObj release] 不再需要
ARC不允许有内存管理的代码
五、自定义类
分两个部分 .h文件中的interface和.m中的implementation
//.h文件中 @interface MyClass:NSObject +(void) methodStatic; //类似于静态方法 -(void) myMethod; @end
//.m文件中 @implementation MyClass +(void)methodStatic{ NSLog(@"俺是个类似于静态的方法"); } -(void)myMethod{ NSLog(@"俺需要实例化后才能调用"); } @end
类的property
非常实用的,安全又亲切,自动生成getter和setter,可以抛弃[]使用熟悉的.符号了
也分两个部分,用@property定义在.h文件,用@synthesize实现在.m文件
//.h文件 @interface Koobe :NSObject @property int age; @property (nonatomic,strong) NSString *name; //(非多线程,强类型),概念一搜就有 @end
//.m文件 @implementation Koobe @synthesize age,name; @end
这样就可以用.符号调用了
Koobe *NewKoobe = [[Koobe alloc] init]; NewKoobe.name=@"Partoo"; //等同于[NewKoobe name] NewKoobe.age = 50; //等同于[NewKoobe age]