IOS之oc学习笔记(2)
语法概述
oc没有包名的概念
在java中为了防止两个类名冲突,可以将两个类放置不同的包里面,OC是没有包的概念的,取而代之的是开发人员给类名加上前缀,使用前缀可以有效的防止类名冲突;
oc的数据类型
oc中新增的关键字
@interface,@implementation,@end,@public,@protected,@orivate,@selector,@try,@catch,@required,@class,@property,synithesize,@dynamic,BOOL,CLASS,SEL,YUE,NO,id,self,super,nul,atomic,nonatomic,retain,assign,copy,block…
注意:
- c语言的关键字都可以在oc源程序中使用。
- oc新增的关键字在使用时,注意部分关键字以“@”开头
常见语法问题
- @interface @end和implementation @end不能嵌套包含
- oc是弱语法,可以只有@implementation,但实际开发中千万不要这样;
@implementation Person :NSObject
{
@public
int _age;
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
Person *p = [Person new];
p->_age = 4;
NSLog(@"%d",p->_age);
}
return 0;
}
- 漏写@end;
- 函数不能直接直接访问类的属性;
- 方法不能直接写在类外面,然后通过函数进行调用;
- 在声明时不能对类的成员变量进行初始化;
- 成员变量和方法不能用static关键词修饰;
- 类的实现可以写在mian函数后面,在使用之前只要有声明就可以;
oc有参,无参方法的声明及实现
//方法类型 返回类型 方法名 参数类型 参数名
- (void) test: (id) and
oc语言中的方法分为类方法和对象方法
1.对象方法:
- 以-开头。入-(void)xx;
- 对象方法只能由对象来调用;
- 对象方法可以访问当前对象的成员变量;
- 调用格式[对象名 对象方法名]
2.类方法: - 类方法以+开头;
- 类方法只能有类来调用;
- 类方法中不能访问实例变量,因为类方法是由类来调用,并没有创建单独存储空间来存放;
- 调用格式【类名 类方法名】
- 不依赖对象,执行效率更好;
无参方法:
#import <Foundation/Foundation.h>
@interface Person : NSObject
-(void) run;
@end
@implementation Person
{
@public
int _age;
}
-(void) run{
NSLog(@"人在跑");
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
Person *p = [Person new];
[p run];
}
return 0;
}
有参方法:
#import <Foundation/Foundation.h>
@interface Person : NSObject
-(void) run:(NSString*) name ;
@end
@implementation Person
{
@public
int _age;
}
-(void) run:(NSString*) namess{
NSLog(@"%@正在跑步",namess);
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
Person *p = [Person new];
[p run:@"张无忌"];
}
return 0;
}