Objective-C:OC的字符串、类与对象

OC的字符串

void print(NSString *str){
    NSLog(@"%@",str);
}

int main() {
    @autoreleasepool {
        NSLog(@"Hello, World!");
        NSString* str1=@"This is a string";
        NSLog(@"%@",str1);
        NSString* str2;
        str2=str1;
        str2=@"This is another string";
        print(str2);

    }
    return 0;
}

类与对象(1)

  1. 类:是结构体的升级,用于定义变量
    1.1关键字
    1.2.属性前加下划线
    1.3类里面有方法(函数)
    1.4 类的变量只能定义在堆上,不能定义在栈上,且不需要 自己释放
    1.5 类中的方法被调用时需要使用中括号
    1.6 类中的属性不能在类外被操作,需要使用setter赋值,用getter访问

  2. 对象
    2.1 对象是一种特殊的变量
    2.2 对象与变量的区别是,对象可以调用类中的方法
    2.3 对象也被称为实例。用类定义一个对象,也被称为类的 实例化

  3. 分割文件,类的声明在.h文件中,类的方法在.m文件中

@interface MyClass :NSObject
{
    int _i; //属性前面加下划线
    char _ch;
}
-(void)method; //方法声明
-(void)setI:(int)i;
-(int)getI;              //一般get省略,直接写I,程序员约定的偷懒方式
-(void)setCh:(char)ch;
-(char)getCh;
@end



@implementation MyClass //类中方法定义,所有类中的方法写到里边

-(void)setI:(int)i
{
    _i=i;
}
-(int)getI
{
    return _i;
}
-(void)setCh:(char)ch
{
    _ch=ch;
}
-(char)getCh
{
    return _ch;
}


-(void)method{
    NSLog(@"类中的函数被执行了");
}

@end


int main() {
    @autoreleasepool {
        //OC类的变量不能定义在栈上
        MyClass *mc=[MyClass alloc];    //定义对象
        [mc method]; //方法调用 
        [mc setI:20]; //属性赋值,属性需要方法来访问,不能直接访问
        int i=[mc getI];
        [mc setCh:'a'];
        char ch=[mc getCh];
        NSLog(@"i=%d,ch=%c",i,ch);


    }
    return 0;
}

类与对象(2)

  1. 定义带有多个形参的方法
  2. 访问权限
    2.1 属性(4种)私有,保护,包内,公有
    2.2 方法(2种)私有 公有
  3. 属性:由关键字自动生成的成员变量的声明+settet+getter
//1.定义带有多个形参的方法

-(void)setName:(NSString *)name andAge:(int)age{ //同时修改两个属性的方法
    _name=name;
    _age=age;
}
-(void)setName:(NSString *)name andAge:(int)age andID:(NSString *)ID andAddress:(NSString *)address{
    _name=name;
    _age=age;
    _ID=ID;
    _address=address;
} //同时修改四个属性的方法
//2.访问权限

@interface CZExample : NSObject
{
    int _i0; //_i0的访问权限是保护的,默认状态
    @public
    int _i1; //_i1的访问权限是共有的,一般不建议使用

    @package
    int _i2; //_i2的访问权限是包内的
    @protected
    int _i3; //访问权限是保护的

    @private
    int _i4; //访问权限私有的,作用域在类内。在子类中不能使用

}
-(void)method;
@end
@implementation CZExample
{
    int _i5; //在implementation中关键字不起作用吗,定义的属性全部为私有的
}
-(void)method{ //公有方法

    [self privateMethod]; //self 调用私有方法

    NSLog(@"这是一个公有方法");
}
-(void)privateMethod{ //私有方法,在interface中没有声明,直接写出方法的函数体是属于私有方法
    NSLog(@"这是一个私有方法");
}
@end
//3.属性:由关键字自动生成的成员变量的声明+settet+getter

@interface CZFraction3 : NSObject
@property int n;    //自动定义_n,并声明定义set,get方法。
@property int d;
@property(readonly) double value;   //只读属性
-(void)show;
@end

@implementation CZFraction3
-(double)value{               //从新定义get方法
    return self.n*1.0/self.d;
}

-(void)show{
    NSLog(@"%d/%d",self.n,self.d);
}
@end

int main(int argc, const char * argv[]) {
    @autoreleasepool {
       CZFraction3 *f3=[CZFraction3 alloc];
        f3.n=8;     //调用setter方法
        f3.d=10;
        [f3 show];   
         NSLog(@"%lg",f3.value);    
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值