• OC:点语法


    IOS中的@property 与 assign copy retain 的区别参考

    //@理解为 OC 代码的标记
            //如何去创建一个对象 创建对象的两步:
            // (1)为对象在堆区中开辟空间
            Student *stu =[Student alloc];
            //在 OC 里面调用方法,采用的是消息发送机制
            //在才OC里所有的对象都用指针变量去储存
            //(2)初始化
            [stu init];
    
    //面向对象 与 过程的区别
        //面向过程:以事件为中心,考虑完成事件的详细步骤
        //面向对象:以事物(类 或 对象)为中心,考虑的是每个事物应具备的功能。而完成事件只是其中的一个小小的功能
        //OOP (Object Oriented Programming) 面向对象的编程
        //OO  (Object Oriented)
        // 类 : 具有相同特征和行为的事物的抽象
        // 对象 : 对象类的实例 ,类的具体表现
        //描述一个类 : 通过特征和行为
        
        //类的表示文件
        //类名的命名规范:首字母要大写 在 OC 中所有的类都继承于 NSObject 类
        //OC 中的类 在 C 语言里是文件
        // 一个类的定义 分为 接口(.h 文件) 实现 (.m 文件) 两部分
        //区分 文件 类   .h 文件 接口文件(头文件) (.m 就是实现文件)
        //总结:接口文件(.h 文件) 功能就是为外界提供可访问的接口  声明类的特征和行为
        //实现文件 (.m 文件):主要实现在接口中声明好的行为
        //特征 也叫实例变量
        // 接口部分的定义   @interface + 类名 : 父类名    @end  (:作用就是说明当前类继承于哪个父类)NSObject 就是一个基类
        //在接口文件里面的定义  必须写在 @interface 和 @end 之间。
        // @implementation 与 @end 之间去实现接口文件中的声明的行为
    知识块
    -(void)eat;
    // - 是对象可调用的方法; + 是类方法类型
    // void playWithSome(NSString * name);
    -(void)playWithSome:(NSString *)someone;
    //方法名字是 haveLaunchWithSomeone: money:
    -(void)haveLaunchWithSomeone:(NSString *)name money:(NSInteger)money;
    
    
    #import <Foundation/Foundation.h>
    #import "Person.h"
    
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            // insert code here...
            NSLog(@"Hello, World!");
            Person *per = [[Person alloc]init];
            per->_age = 12;
            per->_gender= @"";
            per ->_name = @"CCCC";
            per->_height = 1.75;
            [per eat];//消息发送机制
            //真正的对象是在堆区的那块内存,只不过per 存放了这块内存的首地址,所以可以叫per 是person类的一个对象
            //init 实际上 init 为 per 对象里定义的实例变量初始化
            //消息接收机制   [recevier message]       [接受者 发送者]
            Person *per2 = [[Person alloc]init];
            per2 ->_name = @"DDDDDD";
            per2 ->_gender = @"";
            per2 ->_age = 22;
            per2 ->_height = 1.68;
            [per2 eat];
        }
        return 0;
    }
    
    #import <Foundation/Foundation.h>
    
    @interface Person : NSObject
    {
        //实例变量的三种可见度
    @public
        //public之后的实例变量都是公开的
        //大括号里面 就是该类的实例变量(特征)而且该实例变量 必须在大括号内定义
        //对应描述一个类的特征
        //姓名
        NSString *_name;
        //年龄
        NSInteger _age;
        //性别
        NSString *_gender;
        //身高
        CGFloat  _height;
    }
    -(void)eat;
    // - 是对象可调用的方法; + 是类方法类型
    // void playWithSome(NSString * name);
    -(void)playWithSome:(NSString *)someone;
    //方法名字是 haveLaunchWithSomeone: money:
    -(void)haveLaunchWithSomeone:(NSString *)name money:(NSInteger)money;
    //方法名字 getMoney:    一个冒号代表该方法有一个参数,有几个冒号代表有几个参数
    //C语言写法:void getMoney(int money);
    -(void)getMoney:(NSInteger)money;
    -(void)study;//该方法没有返回值,所以后面就没有冒号
    //
    
    //写一个对象方法 有三个参数 NSString NSInteger CGFloat
    -(void)showSomeName:(NSString *)name
                WithAge:(NSInteger)age
                 Height:(CGFloat)height;
    @end
    
    #import "Person.h"
    
    @implementation Person
    
    //如果在 .h 中声明了方法,没有实现的话,这里会有个警告
    -(void)eat{
        NSLog(@"吃货");
    }
    // - 是对象可调用的方法; + 是类方法类型
    // void playWithSome(NSString * name);
    -(void)playWithSome:(NSString *)someone{
        NSLog(@"和%@去玩了",someone);
    }
    //方法名字是 haveLaunchWithSomeone: money:
    -(void)haveLaunchWithSomeone:(NSString *)name
                           money:(NSInteger)money{
        NSLog(@"和%@去吃饭了,花了%ld钱",name,money);
    }
    //方法名字 getMoney:    一个冒号代表该方法有一个参数,有几个冒号代表有几个参数
    //C语言写法:void getMoney(int money);
    -(void)getMoney:(NSInteger)money{
        NSLog(@"有100元可以花,还有%ld钱",money);
    }
    -(void)study{
        NSLog(@"good study ,day up");
    }//该方法没有返回值,所以后面就没有冒号
    //
    
    //写一个对象方法 有三个参数 NSString NSInteger CGFloat
    -(void)showSomeName:(NSString *)name
                WithAge:(NSInteger)age
                 Height:(CGFloat)height{
        NSLog(@"%@ %ld %.2f",name,age,height);
    }
    @end
    知识块

    属性方法 参考

    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            // insert code here...
            NSLog(@"Hello, World!");
            Person *per = [[Person alloc]init];
            per->_age = 12;
            per->_gender= @"";
            per ->_name = @"NNNN";
            per->_height = 1.75;
            [per eat];//消息发送机制
            //真正的对象是在堆区的那块内存,只不过per 存放了这块内存的首地址,所以可以叫per 是person类的一个对象
            //init 实际上 init 为 per 对象里定义的实例变量初始化
            //消息接收机制   [recevier message]       [接受者 发送者]
            Person *per2 = [[Person alloc]init];
            //为per2 对象的实例变量赋值
            per2 ->_name = @"LLL";
            per2 ->_gender = @"";
            per2 ->_age = 22;
            per2 ->_height = 1.68;
            
          // + 代表是类方法 只有给类使用
          // - 代表是对象方法 只有对象使用
            //字符串之前 一定要加 @
            [per haveLaunchWithSomeone:@"HHHHH" money:100];
    //        Person *per3 = [Person new];//采用 垃圾回收
        //OC 中内存管理的方式有两种: 垃圾回收MAc编程下 、IOS下引用计数
        //IOS 中内存管理方式主要是 :引用计数
            //per2 对象调用方法
            [per2 showSomeName:per2->_name WithAge:per2->_age Height:per2->_height];
            
            //自己写一个汽车类,为汽车类声明实例变量和方法,实现方法
            Car *car = [[Car alloc]init];
            car->_name = @"老爷车";
            car->_color = @"富贵红";
            car->_national = @"中国制造";
            car->_wheels = 4;
            car->_speed = 120.5;
            [car printOfCarWithName:car->_name wheels:car->_wheels color:car->_color national:car->_national speed:car->_speed];
    
            MobilePhone *iphone = [[MobilePhone alloc]init];
            iphone->_name = @"魅族Max5";
            iphone->_national = @"中国";
            iphone->_datatime = @"2015-06-15";
            iphone->_price = 4500;
            iphone->size = @"15*20*5";
            [iphone printOfMobilePhineWithName:iphone->_name national:iphone->_national datatime:iphone->_datatime price:iphone->_price size:iphone->size];
            
        }
    
        return 0;
    }
    知识块

     内存管理: 有对一个对象的的使用权称为“拥有”(own)这个对象,对象的拥有着者个数至少为1,对象才得以存在,否则他应被立即销毁。

    判断一个对象对另一个对象有使用权限:1当你对对象做了 alloc 、 copy 、retain 等操作之后,你才拥有他的所有权     2 当你不再需要这个对象的时候,就要释放对他的所有权    3.你不可能对你没有所有权的对象做释放工作.

  • 相关阅读:
    根据excel的文件的路径提取其中表的数据到DataSet中 .
    查询SQL Server数据库中的用户表的数量的问题
    C#获取键盘和鼠标操作的时间的类
    使用消息来处理多线程程序中的一些问题
    多线程程序写日志时遇到加锁的问题
    android之横向滚动图
    android listview的一些设置
    android之异步任务
    android之隐式intent调用
    android之广播
  • 原文地址:https://www.cnblogs.com/benpaobadaniu/p/4731834.html
Copyright © 2020-2023  润新知