IOS之oc学习笔记(2)

本文介绍了Objective-C的基本语法,包括类名前缀替代包名概念、数据类型如基本数值、字符、布尔和指针等,以及新增关键字的使用。此外,还详细讲解了Objective-C的方法声明和实现,包括对象方法和类方法的区别,并通过示例展示了无参和有参方法的定义和调用。强调了`@interface`、`@implementation`和`@end`的使用规范以及常见语法注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IOS之oc学习笔记(2)

语法概述
oc没有包名的概念

在java中为了防止两个类名冲突,可以将两个类放置不同的包里面,OC是没有包的概念的,取而代之的是开发人员给类名加上前缀,使用前缀可以有效的防止类名冲突;

oc的数据类型
OC数据类型
基本数据类型
数值型
字符型char
布尔型Bool
空类型void
整数类型
浮点型
Block
指针数据类型
id类型
特殊类型 sel,nil
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…

注意:
  1. c语言的关键字都可以在oc源程序中使用。
  2. oc新增的关键字在使用时,注意部分关键字以“@”开头
常见语法问题
  1. @interface @end和implementation @end不能嵌套包含
  2. 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;
}
  1. 漏写@end;
  2. 函数不能直接直接访问类的属性;
  3. 方法不能直接写在类外面,然后通过函数进行调用;
  4. 在声明时不能对类的成员变量进行初始化;
  5. 成员变量和方法不能用static关键词修饰;
  6. 类的实现可以写在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;
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值